从html访问WEB-INF / jsp

时间:2018-06-25 06:37:13

标签: java html jsp servlets

我有一个简单的应用程序来测试html和jsp之间的通信。我的jsp位于

WEB-INF/test.jsp

这是我文件的结构:

ProjectA 
  src 
    irstServlet.java 
  Web-Content 
    test1.html 
    WEB-INF 
      test.jsp 

这是servlet中的代码

protected void doPost(HttpServletRequest request, response) throws ServletException, IOException {
  RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/test.jsp");
  request.setAttribute("userName", request.getParameter("userName"););
  dispatcher.forward(request, response);
}

首先,我已经在tomcat中部署了我的test1.html:将我带到servlet:FirstServlet.java,然后可以在其中输入userName。

但是在我输入值并按Enter之后,我希望它将我转发到无法正常工作的test.jsp。我收到错误消息:

  

原始服务器找不到目标资源的当前表示,或者不愿意透露其存在。

编辑: 在我的html中,我试图像这样使用它:

<form method="POST" name="XX" action="/HelloWorldServlet">

仍然无法正常工作。

请有人帮我吗?

1 个答案:

答案 0 :(得分:2)

您的代码看起来根本无法编译。

  • 参数response没有类型-应该为HttpServletResponse
  • ;之后有一个分号(request.getParameter("userName")

我也不知道为什么从servlet上下文而不是从请求中获取RequestDispatcher-然后我再也没有检查过它是否有任何作用。

无论如何,我会这样重写doPost方法:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setAttribute("userName", request.getParameter("userName"));
    req.getRequestDispatcher("/WEB-INF/test.jsp").forward(req, resp);
}

编辑:

我在保证您的web.xml中有正确的servlet映射:

<servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>

或者您的servlet带有@WebServlet注释:

@WebServlet("/HelloWorldServlet")
public class FirstServlet extends HttpServlet {
    //your code
}

。如果这两个都不正确,那就是您的问题所在。