我正在使用Eclipse来编写servlet。现在,我想让example.jsp
做类似servlet(访问属性或ServletConfig的参数,ServletContext,......)
我将example.jsp放在WebContent的顶部,项目名称是ProjectExample。
在web.xml中,这是我如何声明这个servlet:
<servlet>
<servlet-name>JSP Example</servlet-name>
<jsp-file>example.jsp</jsp-file>
<init-param>
<param-name>name</param-name>
<param-value>hqt</param-value>
</init-param>
// I meet warning at <jsp-file>: that doesn't found this file
//although I have change to: `/example.jsp`, `ProjectExample/example.jsp` or `/ProjectExample/example.jsp`
</servlet>
因为Container无法识别此文件,所以当我使用:getServletConfig().getInitParameter("name")
时,我会收到空的!!!
请告诉我如何解决这个问题。
谢谢:)
@:如果代码输入错误,那不是问题,因为它只是错字。我不知道为什么StackOverFlow不再允许复制/粘贴功能。
答案 0 :(得分:1)
我认为主要问题不在于您的配置,而在于jsp页面的配置方式。
更改您的<jsp-file>/example.jsp</jsp-file>
并将其添加到JSP:
Who am I? -> <%= getServletName() %>
我的信箱输出是:
Who am I? -> jsp
这是因为所有JSP共享相同的servlet配置,称为“jsp”。它配置在$ CATALINE_HOME / conf / web.xml(如果您使用的是Tomcat)。对于我的Tomcat 7,配置如下所示:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
答案 1 :(得分:0)
你的servlet应该有init
方法,你可以在那里读取你需要的参数:
public class SimpleServlet extends GenericServlet {
protected String myParam = null;
public void init(ServletConfig servletConfig) throws ServletException{
this.myParam = servletConfig.getInitParameter("name");
}
//your servlet code...
}
此示例取自here