我在servlet上测试了一个简单的测试。我想向JSP展示我在servlet中创造的价值,但它似乎没有出现。这是我的密码。
Test.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(page):
<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>然后,当我要在页面中查看它时,它的值就不会出现。总有一天能告诉我怎么了?
发布于 2013-08-15 10:29:00
您正在尝试直接访问/servlet-test.jsp,这意味着servlet将永远不会被调用!
您应该点击servlet的/Test URL,而不是直接转到JSP‘/servlet-test.jsp’。
这就是为什么通常的做法是通过将JSP放在WEB-INF目录下的目录下,来隐藏JSP不被直接访问的原因。
然后,请求调度程序行将更改为
request.getRequestDispatcher("/WEB-INF/jsp/servlet-test.jsp").forward(request, response);所以你点击的URL应该是
www.example.com/context/Test发布于 2013-08-15 13:43:51
解决了!只需向url模式添加扩展即可。
web.xml:
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test.do</url-pattern>
另外,我还删除了request.getRequestDispatcher(this中的WEB,这是我不明白的部分,但它有效。)
request.getRequestDispatcher("/servlet-test.jsp").forward(request, response);https://stackoverflow.com/questions/18250680
复制相似问题