转发和重定向

发表时间:2017-05-15 16:24:50 浏览量( 14 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

一、转发和重定向的区别

1、转发和重定向的区别

(1)重定向:其实是两次请求, 第一次,客户端请求服务器响应,这时候服务器response回来,告诉浏览器,你应该去另外一个地址访问,浏览器就会发送第二次请求,服务器会再一次应答。这个时候浏览器的网址可以看到地址变了,而且历史的回退按钮也亮了。

重定向可以访问自己web应用以外的资源。在重定向的过程中,请求传输的信息会被丢失。示例代码如下:

   response.sendRedirect("success.jsp");

(2)请求转发:服务器内部进行的转发操作,把对一个request/response的处理权,移交给另外一个jsp或者servlet处理,对于客户端而言,它只知道自己最早请求的那个网址,而不知道中间的经过多少个jsp或者servlet,在转发过程中请求的信息不会丢失。

   request.getRequestDispatcher("succes.jsp").forward(request,response);

如果你还不明白,我们可以带一个现实点的比方:比如你需要去政府部分办事

重定向:你先去了A局,A局给你盖个章,然后A局的人说:“我办完这个事情了,你现在去B局吧”,然后,你就从A局退了出来,自己拿着资料去了B局。 在这个过程中政府部门是不会保存你的资料的。

转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B局的人,让他们办好后,送了过来。在整个过程中你只会简单A局的人,你不知道政府部门后面经过了多少的传递。

二、用户列表示例

1、实现数据库访问层,就是model层。

  public List<User> getAll() {    List<User> users = new ArrayList

2、实现servelt。也就是control层。新建一个servlet。从数据库层中查询数据,然后放到request作用域中,使用request.setAttribute方法,有关作用域的知识点,我们明天再讲。实现代码如下:

public class UserListServlet extends HttpServlet {
   public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       UserDao userDao = new UserDao();
       List<User> users = userDao.getAll();
       request.setAttribute("users", users);
       request.getRequestDispatcher("listuser.jsp").forward(request, response);
   }
   public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       doGet(request, response);
   }
}

3、修改web.xml。

>
 <-mapping>
    <-name>UserListServlet
    <-pattern>/userList
  servlet-mapping>

在主页上面新建一个超链接连接这个servlet。注意必须要先经过servlet才能访问数据库的数据,页面层不在直接访问数据库层。

4、实现页面。

>
<>