首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于servlet映射路径有关问题,查了半天实在不知道原因

2013-07-09 
关于servlet映射路径问题,查了半天实在不知道原因,求助在学servlet,事情是这样的,简单的模拟登陆用户,然后

关于servlet映射路径问题,查了半天实在不知道原因,求助
在学servlet,事情是这样的,简单的模拟登陆用户,然后action跳转servlet处理后请求转发到另一个页面,但是如果web.xml里配置了 <url-pattern>/servlet/loginServlet</url-pattern>,请求转发的页面的路径也会带上 /servlet

详细信息如下:
--------------------------此为映射配置
  <servlet-mapping>
    <servlet-name>loginServlet</servlet-name>
    <url-pattern>/servlet/loginServlet</url-pattern> 
  </servlet-mapping>

---------------------------下面为action
<form action="${pageContext.request.contextPath}/servlet/loginServlet" method="post">

---------------------------下面是servlet部分代码
if(username==null||"".equals(username)){
request.setAttribute("error", "kong");
request.getRequestDispatcher("message.jsp").forward(request, response);

-------------------------------------
如果密码或用户名为空 就让它转发到 messages.jsp ,但是转发后会出现404错误
HTTP Status 404 - /test1/servlet/message.jsp
这里带上了/servlet 这个路径

如果<url-pattern>/loginServlet</url-pattern> 这里不加/servlet的话,就转发正常 Servlet web.xml
[解决办法]
/代表webroot根目录,所以当你加上/后,它转发给浏览器的地址就是:工程名/message.jsp;

不加/就代表当前位置,很显示你跳到servlet的路径是/servlet/loginServlet,当前的位置就是/servlet,它转发给浏览器的地址是:工程名/servlet/message.jsp,这时候很显然没有找到,浏览器就给你个404

这里所说的它是指Tomcat容器!
[解决办法]
request.getRequestDispatcher("message.jsp").forward(request, response);是服务器端跳转,message.jsp加上一个“/”就会帮你获取到项目的根路径,不加就跳转的时候url不改变,所以出现404错误

热点排行