我有一个简单的应用程序来测试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">
仍然无法正常工作。
请有人帮我吗?
答案 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
}
。如果这两个都不正确,那就是您的问题所在。