转发和重定向的区别,web路径问题
2017-07-17 21:29
239 查看
一、给服务器使用的 “/”表示在当前web应用的根目录webRoot(WebContent)
request.getRequestDispatcher("/index.html")
转发是服务器级别,浏览器(客户端)的地址不会变。即是,浏览器(客户端)发送一个请求,服务器受理之后,发现要请求其他的内容,就是服务器自己去处理完成。由于是服务器自己处理,因此转发不能转发当前web应用以外的资源,可以把数据保存爱request对象当中。
二、给浏览器(客户端)使用的 “/”表示在tomcat的webapps的根
response.sendRedirect("/webDemo/index.html");
重定向是客户端级别,浏览器(客户端)的地址会改变。服务器收到请求后,发现要去请求其他的内容,就告诉客户端一个地址,那么客户端就去请求那个别的内容了。因为WEB-INF下面的内容都是只能由服务器级别才能访问,客户端级别并不能访问。因此重定向不能直接访问WEB-INF文件下的文件。
可以通过编写WEB-INF下的web.xml进行映射,例如有个JSP文件/WEB-INF/jsp/my.jsp,可以在配置文件web.xml中写:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <!-- 通过路径映射,这样就可以通过直接访问 localhost:8080/web/hellow来进入WEB-INF文件下jsp页面了 --> <servlet> <servlet-name>my</servlet-name> <jsp-file>/WEB-INF/jsp/hellow.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>my</servlet-name> <url-pattern>/hellow</url-pattern> </servlet-mapping> </web-app>
三、web路径问题
现在web项目中有两个jsp页面,一个在WebRoot(WebContent)下,一个在/WebContent/WEN-INF下,我们尝试分别用重定向和转发分别访问以下这两个文件package servlet; import java.io.File; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Servlet") public class Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String i = request.getParameter("i"); if(i!=null){ switch(i){ case "1"://通过,Request URL:http://localhost:8080/hotel/login.jsp response.sendRedirect("login.jsp"); break; case "2"://不通过,Request URL:http://localhost:8080/login.jsp response.sendRedirect("/login.jsp"); break; case "3"://不通过,Request URL:http://localhost:8080/hotel/servlet?i=3 //通过,Request URL:http://localhost:8080/hotel/login.jsp response.sendRedirect("/hotel/login.jsp"); break; case "4"://不通过,Request URL:http://localhost:8080/hotel/WebContent/login.jsp response.sendRedirect("/hotel/WebContent/login.jsp"); break; case "5"://不通过,客户端级别是不能直接访问WEB-INF下面的文件的 response.sendRedirect("/hotel/WebContent/WEB-INF/index.jsp"); break; case "6"://通过 request.getRequestDispatcher("login.jsp").forward(request, response); break; case "7"://通过 request.getRequestDispatcher("/login.jsp").forward(request, response); break; case "8"://通过 request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response); break; case "9"://通过 request.getRequestDispatcher("WEB-INF/index.jsp").forward(request, response); break; case "10"://不通过,在服务端级别“/”,是代表是 /WebContent目录下 request.getRequestDispatcher("/hotel/WebContent/login.jsp").forward(request, response); break; } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
相关文章推荐
- Java Web - 路径问题 - Struts - 配置文件 - 各种重定向与转发
- Web--重定向和转发的路径问题
- web中转发、重定向等问题的路径
- web中解决乱码问题&&重定向和请求转发区别
- 转发,重定向中的路径问题以及两者的区别,用法
- Servlet中转发和重定向的路径问题以及表单提交路径问题
- 关于javaWeb里转发与重定向斜杠的问题
- 关于 Web开发中的请求重定向和内部转发的区别 (声明:文章有 截取其他博客的内容)
- JSP中请求转发和重定向区别和中文乱码问题解决方法
- Java Web转发和重定向问题
- java web工程中关于redirect重定向和forward页面转发的区别
- servlet中的请求转发和重定向的路径问题
- 在重定向,转发中关于路径问题的总结
- 重定向和转发引出的URL路径问题
- javaWeb中转发与重定向的区别
- 重定向和转发路径问题的细节部分【shiro出现循环重定向问题】
- JavaWeb Filter 过滤器的机制 与使用 请求重定向与请求转发的区别 跳转过滤,过滤器dispatcher REQUEST与FORWARD区别
- Servlet中转发和重定向的路径问题以及表单提交路径问题
- Servlet中转发和重定向的路径问题
- java中web应用中重定向与转发的区别