0

我已经在 servlet 上测试了一个简单的测试。我想向 JSP 显示我在 servlet 中所做的值,但它似乎没有出现。这是我的代码。

测试.java(servlet):

public class Test extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Test() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String message = "hello";
        request.setAttribute("message", message);
        request.getRequestDispatcher("/servlet-test.jsp").forward(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }
}

servlet-test.jsp(页面):

<p>Message: ${message}</p>

web.xml

<servlet>
    <description></description>
    <display-name>Test</display-name>
    <servlet-name>Test</servlet-name>
    <servlet-class>com.fluxion.mrcos.actions.Test</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/Test</url-pattern>
</servlet-mapping>

然后,当我要在页面中查看它时,该值不会出现。哪天能告诉我怎么了?

4

2 回答 2

0

您正在尝试/servlet-test.jsp直接访问,这意味着 servlet 永远不会被调用!

您应该访问 servlet 的 URL,/Test而不是直接访问 JSP,“/servlet-test.jsp”。

这就是通常的做法是隐藏 JSP 以防止直接访问的原因,方法是将它们放在目录下的WEB-INF目录下。

然后您的请求调度程序行将更改为

request.getRequestDispatcher("/WEB-INF/jsp/servlet-test.jsp").forward(request, response);

所以你点击的网址应该是

www.example.com/context/Test
于 2013-08-15T10:29:00.413 回答
-1

解决了!只需将扩展名添加到url-pattern

网页.xml:

<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test.do</url-pattern>

我还删除了request.getRequestDispatcher中的 WEB-INF (这是我不明白的部分,但它有效。)

request.getRequestDispatcher("/servlet-test.jsp").forward(request, response);
于 2013-08-15T13:43:51.343 回答