0

我正在使用 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")我会收到 null !!!

请告诉我如何解决这个问题。

谢谢 :)

@:如果在代码中输入错误,那不是问题,因为它只是拼写错误。我不知道为什么 StackOverFlow 不再允许复制/粘贴功能。

4

2 回答 2

1

我认为主要问题不在于您的配置,而在于配置 jsp 页面的方式。

更改您的<jsp-file>/example.jsp</jsp-file>并将其添加到 JSP:

Who am I? -> <%= getServletName() %>

我的盒子输出是:

Who am I? -> jsp

这是因为所有 JSP 共享同一个称为“jsp”的 servlet 配置。它在 $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>
于 2012-04-22T20:31:37.993 回答
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...
}

这个例子取自这里

于 2012-04-22T21:14:21.167 回答