HttpServletRequest无法解析

我导入了以下导入javax.servlet.http。*;

我想获得首选语言浏览器

HttpServletRequest request = ServletActionContext.getRequest(); Locale userPreferredLocale = request.getLocale(); 

我得到一个错误HttpServletRequest无法解决。

如果可能的话,有人可以帮助我并给我一步一步的指导。 我不是一个java开发人员,而是一个.net,只是修复一个bug。

非常感谢

javax.servlet.http包是servlet API的一部分。 相关的jar可以在Java EE容器(例如Sun的Glassfish)或独立的servlet容器(例如Apache的Tomcat)中找到。 实质上,这些是Java Web服务器。

为了编译依赖于它的代码,您必须将servlet库添加到依赖项中。 具体如何完成取决于您使用的工具。

你在构建一个Web应用程序吗? (预期输出是.war还是.ear文件?)源是否与build.xml (可能是Ant构建),任何pom.xml文件(可能是Maven构建)或任何.project/.classpath文件捆绑在一起(可能是一个Eclipse项目)?


情况是这样的。 Asp.net 1.1在调用webservice的页面上有一个javaapplet。 Javaapplet应该在.net中检测用户首选语言你做HttpContext.Current.Request.UserLanguages [0]所以我问,显然在java中等价的是request.getLocale();

好的,不理我上面所说的。 要在Applet中获取Locale ,我想你只会使用:

 Locale userLocale = Locale.getDefault(); 

在Java Web服务器上,您将使用request.getLocale()从HTTP请求中获取用户的语言环境。 小程序在客户端上运行。

看起来你正在使用Struts2。 有两种方法可以访问HttpServletRequest对象

  1. 更改Struts操作以实现ServletRequestAware接口 – 这是首选方法
  2. 您在上面显示的方法

鉴于(1)是首选方法,我建议你试试这个,更多细节在这里 。

更新:根据你添加的评论,似乎你实际上并没有使用Struts。 您在服务器端使用.Net,在客户端使用Java Applet。 如果是这种情况,尝试使用Servlet或Struts2 API是没有意义的,因为它们只是服务器端

鉴于您已经知道如何在.Net服务器端获取用户的首选语言,我不明白为什么您不这样做?

您可以执行以下操作:在您的类中导入jar文件:

import javax.servlet.http.HttpServletResponse

添加Apache Tomcat库如下:

项目>属性> Java构建路径>库>从库选项卡添加库>选择服务器运行时>下一步>选择Apache Tomcat v 6.0>完成>确定

首先,确保Servlet jar包含在eclipse中的类路径中,如PermGenError所述。

编译源代码时,需要将包含servlet类的jar添加到类路径中。 一种方法是使用-cp标志:

 javac -classpath lib/servlet.jar MyClass.java 

要在Applet中获取Locale,请使用inheritance的getLocale()方法。

例:

 public class MyApplet extends Applet { public void doStuff() { Locale locale = getLocale(); // Now you can work with that. } } 

javax.servlet.http和所有与servlet上下文和servlet编程相关的类仅与您的Servlet容器相关。 因此,请停止对其他任何事情的担心,并检查Tomcat库是否包含在您的WEB-APP类路径中。

如果没有添加它们,一切都会好的。

右键单击项目>“属性”>“添加库”>“服务器运行时”

并选择与您的应用程序关联的服务器。

你完成了,这将包括你的项目的Servlet容器库和HttpServletRequest和HttpServletResponse类将被解决。

希望它有所帮助,有关Servlet架构和上下文的更多信息可以在这里找到。

在将我的Web应用程序部署到Glassfish 4.0 Server(在Eclipse IDE上)时,我收到此消息“导入javax.servlet.http.HttpSession无法解析”。 然后我尝试了这些步骤:

  • 右键单击项目>属性>项目构面> Glassfish Web扩展>运行时>清单GlassFish实例(例如:Localhost中的GlassFish 4.0)
  • 单击“应用”

它工作正常..