zoukankan      html  css  js  c++  java
  • 定向转发和重定向实现 <select >下拉表单数据传送

           定向转发的特点:

                  (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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     <title>注册页面</title>    
    12     <meta http-equiv="pragma" content="no-cache">
    13     <meta http-equiv="cache-control" content="no-cache">
    14     <meta http-equiv="expires" content="0">    
    15     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    16     <meta http-equiv="description" content="This is my page">
    17     <!--
    18     <link rel="stylesheet" type="text/css" href="styles.css">
    19     -->
    20   </head>
    21   
    22   <body>
    23   <%   String authority = (String) request.getAttribute("authority"); %>
    24      <form action="LoginServlet"    method="post" > 
    25        username :<input type="text" name="username" value="<%=null==request.getAttribute("username")?"":request.getAttribute("username")%>"><br>
    26        password :<input type="password" name="password"><br>
    27        
    28        authority:
    29        <select name="authority">
    30              <option value="1"<%="1".equals(authority)?"selected":""%>>common user</option>
    31             
    32              <option value="2"<%="2".equals(authority)?"selected='selected'":""%>>administrator</option>
    33    
    34       </select><br>
    35  
    36        <input type="submit" value="submit">
    37    
    38      </form>
    39   </body>
    40 </html>

         效果图:

              

    关于: 然后需要一个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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     <title>注册页面</title>    
    12     <meta http-equiv="pragma" content="no-cache">
    13     <meta http-equiv="cache-control" content="no-cache">
    14     <meta http-equiv="expires" content="0">    
    15     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    16     <meta http-equiv="description" content="This is my page">
    17     <!--
    18     <link rel="stylesheet" type="text/css" href="styles.css">
    19     -->
    20   </head>
    21   
    22   <body>
    23    <%  
    24       String username = request.getParameter("username");
    25       String authority = request.getParameter("authority");
    26    %>
    27      <form action="LoginServlet"    method="post" > 
    28        username :<input type="text" name="username" <%= null == username ? "":username %> ><br>
    29        password :<input type="password" name="password"><br>
    30        
    31        authority:
    32        <select name="authority">
    33              <option value="1" <%= "1" == authority ?"":"selected"%> >common user</option>
    34             
    35              <option value="2" <%= "2" == authority ?"":"selected"%> >administrator</option>
    36    
    37       </select><br>
    38  
    39        <input type="submit" value="submit">
    40    
    41      </form>
    42   </body>
    43 </html>

    对于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 }

    显示的效果:

         

  • 相关阅读:
    [译]rabbitmq 2.1 Consumers and producers (not an economics lesson)
    mysql存储过程执行权限问题
    修改linux端口范围 ip_local_port_range
    centos6 自启动任务
    randomize_va_space
    linux 捕获信号处理中遇到的死锁
    squid基础配置
    [转]你应该了解的 一些web缓存相关的概念
    libevent简介 构成
    Libevent windows/linux下编译
  • 原文地址:https://www.cnblogs.com/gongxijun/p/4159446.html
Copyright © 2011-2022 走看看