博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定向转发和重定向实现 <select >下拉表单数据传送
阅读量:4478 次
发布时间:2019-06-08

本文共 9546 字,大约阅读时间需要 31 分钟。

       定向转发的特点:

              (1). 实行转发时浏览器上的网址不变  (如果你这点忽视了,那你就要接受我无尽的鄙视吧! 哇咔咔~~~)

              (2). 实行转发时 :   只有一次请求。  不信,看这下面的图:   (俗话说,没图说个jb)

                                       

              (3).  定向转发的网址必须是本站点的网址.    (因为它不消除,消除数据)

            (4)  定向转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。  

    实现的两个API:        

1 RequestDispatcher rd 2          = request.getRequestDispatcher("Demo_1/Login.jsp");3 4 rd.forward(request, response);
定向转发

         关于定向转发实现selected选项功能:

                                 

上面这个控件的代码:

       JSP代码:

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6  7  8  9   10     11     注册页面    12     
13
14
15
16
17
20 21 22 23 <% String authority = (String) request.getAttribute("authority"); %>24
25 username :
">
26 password :
27 28 authority:29
35 36
37 38
39 40

     效果图:

          

关于: 然后需要一个Servlet  类:   (即纯java文件)

1 package Demo; 2  3 import java.io.IOException; 4 import java.io.PrintWriter; 5  6 import javax.servlet.RequestDispatcher; 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest;10 import javax.servlet.http.HttpServletResponse;11 import javax.servlet.http.HttpSession;12 13 public class LoginServlet extends HttpServlet {14 15     public void doGet(HttpServletRequest request, HttpServletResponse response)16             throws ServletException, IOException {17         String username = request.getParameter("username");18         String password =request.getParameter("password");19         String authority =request.getParameter("authority");20         21            Login log = new Login();22            HttpSession  session = request.getSession();23         if("1".equals(authority))24         {25               //  登录的是普通用户26           if("zhangsan".equals(username) && "123".equals(password))27           {28               //    将用户的信息放置到Session当中29             30                log.setUsername(username);31                log.setAuthority(authority);32                log.setPassword(password);33                session.setAttribute("log", log);34           }else {35     36               //定向转发37               request.setAttribute("username",username);38               request.setAttribute("password", password);39               request.setAttribute("authority",authority);40               RequestDispatcher  rd = request.getRequestDispatcher("Demo_1/Login.jsp");41                rd.forward(request, response);42           }43         }44         else if("2".equals(authority)){45           //    登录的是系统管理员46           if("Tom".equals(username) && "456".equals(password))47           {48               log.setAuthority(authority);49               log.setPassword(password);50               log.setUsername(username);51               session.setAttribute("log",log);52           }53           else  {54 55                    // 采取的是定向转发56     57               request.setAttribute("username",username);58               request.setAttribute("password", password);59               request.setAttribute("authority",authority);60                RequestDispatcher  rd = request.getRequestDispatcher("Demo_1/Login.jsp");61                rd.forward(request, response);62           }63         } else  {64         65             request.setAttribute("username",username);66             request.setAttribute("password", password);67             request.setAttribute("authority",authority);68             RequestDispatcher  rd = request.getRequestDispatcher("Demo_1/Login.jsp");69             rd.forward(request, response);70 71         }72     73     }74     75     public void doPost(HttpServletRequest request, HttpServletResponse response)76             throws ServletException, IOException {77                    this.doGet(request, response);78     }79 }

一个  javabean文件:

     

1 package Demo; 2  3 //设置一个JavaBean 类 4  5 public class Login { 6    7     private String username   ; 8     private String password   ; 9     private String authority  ;10     11     public String getUsername() {12         return username;13     }14     15     public void setUsername(String username) {16         this.username = username;17     }18     19     public String getPassword() {20         return password;21     }22     23     public void setPassword(String password) {24         this.password = password;25     }26     27     public String getAuthority() {28         return authority;29     }30     31     public void setAuthority(String authority) {32         this.authority = authority;33     }34 }

     重定向的特点:

       (1)执行重定向时浏览器上的网址改变.  

       (2)重定向实际上产生了两次请求  (看下面的图)

          

        (3)执行重定向时 的网址可以是任何网址。

   调用的 API 函数:

             1 response.sendRedirect("Demo_1/Login.jsp? username="+username+"&authority="+authority);  

    对于定向转发和重定向的实际执行情况,可以简单的慨括为:

       对于重定向:

           发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器 

   对于定向的转发:

               发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器 

特别需要注意的是:

                 重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。

          转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。

然后运用重定向实现<select> 下拉列表的代码:

    对于JSP:

          

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6  7  8  9   10     11     注册页面    12     
13
14
15
16
17
20 21 22 23 <% 24 String username = request.getParameter("username");25 String authority = request.getParameter("authority");26 %>27
28 username :
<%= null == username ? "":username %> >
29 password :
30 31 authority:32
38 39
40 41
42 43

对于Servlet类:

   

1 package Demo; 2  3 import java.io.IOException; 4 import java.io.PrintWriter; 5  6 import javax.servlet.RequestDispatcher; 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest;10 import javax.servlet.http.HttpServletResponse;11 import javax.servlet.http.HttpSession;12 13 public class LoginServlet extends HttpServlet {14 15     public void doGet(HttpServletRequest request, HttpServletResponse response)16             throws ServletException, IOException {17         String username = request.getParameter("username");18         String password =request.getParameter("password");19         String authority =request.getParameter("authority");20         21            Login log = new Login();22            HttpSession  session = request.getSession();23         if("1".equals(authority))24         {25               //  登录的是普通用户26           if("zhangsan".equals(username) && "123".equals(password))27           {28               //    将用户的信息放置到Session当中29             30                log.setUsername(username);31                log.setAuthority(authority);32                log.setPassword(password);33                session.setAttribute("log", log);34           }else {35               //执行重定向函数               36              response.sendRedirect("Demo_1/Login.jsp? username="+username+"&authority="+authority);37           }38         }39         else if("2".equals(authority)){40           //    登录的是系统管理员41           if("Tom".equals(username) && "456".equals(password))42           {43               log.setAuthority(authority);44               log.setPassword(password);45               log.setUsername(username);46               session.setAttribute("log",log);47           }48           else  {49 //               采取的是重定向50                response.sendRedirect("Demo_1/Login.jsp?username="+username+"&authority="+authority);51                   }52         } else  {53         54 //               采取的是重定向55             response.sendRedirect("Demo_1/Login.jsp?username="+username+"&authority="+authority);56         }57     58     }59     60     public void doPost(HttpServletRequest request, HttpServletResponse response)61             throws ServletException, IOException {62                    this.doGet(request, response);63     }64 }

对于JavaBean类:

      

1 package Demo; 2  3 //设置一个JavaBean 类 4  5 public class Login { 6    7     private String username   ; 8     private String password   ; 9     private String authority  ;10     11     public String getUsername() {12         return username;13     }14     15     public void setUsername(String username) {16         this.username = username;17     }18     19     public String getPassword() {20         return password;21     }22     23     public void setPassword(String password) {24         this.password = password;25     }26     27     public String getAuthority() {28         return authority;29     }30     31     public void setAuthority(String authority) {32         this.authority = authority;33     }34 }

显示的效果:

     

转载于:https://www.cnblogs.com/gongxijun/p/4159446.html

你可能感兴趣的文章
多标签分类(multi-label classification)综述
查看>>
史上最全面的Spring-Boot-Cache使用与整合
查看>>
图的遍历(深度优先与广度优先搜索两种方案)
查看>>
快速读入模板
查看>>
\n ^ \t的使用
查看>>
css盒模型
查看>>
探索式测试:测试自动化
查看>>
make install fping
查看>>
面试笔试题
查看>>
#loj3051 [十二省联考2019] 皮配
查看>>
MySql可视化工具MySQL Workbench使用教程
查看>>
个人站立会议第二阶段07
查看>>
云时代架构阅读笔记五——Web应用安全
查看>>
IOS 单击手势和cell点击冲突
查看>>
学习_HTML5_day3
查看>>
计算机网络与应用第二次笔记
查看>>
Django之ORM查询
查看>>
学习python第七天
查看>>
Flask基础(07)-->正则自定义转换器
查看>>
C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等)
查看>>