定向转发和重定向实现 <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 }

显示的效果:

时间: 2024-10-09 16:42:36

定向转发和重定向实现 <select >下拉表单数据传送的相关文章

css解决select下拉表单option高度的办法

css在给select下拉表单设置样式如边框时可以轻松搞定,而我们在不喜欢其默认的下拉箭头的样式时试图通过background:url(图片路径)来修改之,则往往会出现浏览器的兼容性问题,在网上查了好多资料,最好的解决办法也是大神们用js来模拟下拉表单.额~,好吧,暂且就按照大神们的办法来解决这个问题吧. 下边来说说css如何解决select的option高度的? 有时我们在设置了select的高度后,发现其option的高度还是默认的高度,跟我们设置的select的高度大相径庭,很显然,这不是

DIV+CSS+JS仿Select下拉表单网页特效源代码下载

DIV+CSS+JS仿Select下拉表单 原文:DIV+CSS+JS仿Select下拉表单网页特效源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463331830784.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <

JavaScript获取Select下拉框Option的Value和Text值的方法

Js获取select下拉列表框各个Option的Value值相对比较容易,不过获取Text值却有点麻烦,对于一个初学JavaScript的 新手来说,可能一时还无从下手,那么就请看下本文的方法,以一个form表单中的Select下拉框菜单为例,来说明如何用JavaScript获取其 Value值和Text值: 示例表单,里面是一个select下拉列表框的各个列表项及值: <form name="form1"> <select name="testvalue&

Javascript获取select下拉框选中的的值

现在有一id=test的下拉框,怎么拿到选中的那个值呢? 分别使用javascript原生的方法和jquery方法 <select id="test"  name="">     <option   value="1">text1</option>     <option   value="2">text2</option>    </select> co

vue 运用ElementUI,做select下拉框回显

第一.加载的顺序,应该先加载下拉框要选择的数据,然后在通过编辑查询数据后回显. 第二.要保证select下拉的ID和v-model里边的id保持一致. 第三.elementUI就会自动的将数据回显了. 一下是截图:

火狐浏览器下连接a下无法使用select下拉菜单

火狐浏览器下连接a下无法使用select下拉菜单:如果select下拉菜单包裹在链接a中,则无法实现选中效果,当然如此使用在实际应用中也是很少见的,不过下面还是做一下简单介绍,如何避免此种问题的出现,寄希望能够给需要者带来一定的帮助.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content=&

jQuery制作简洁的多级联动Select下拉框

今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多.另外,这个Select下拉框也可以绑定下拉事件,并获取当前选中项的值. html代码: <div class="wrap">        <div class="nice-select" name="nice-select">   

模拟select下拉框之多选(数据源采用模拟Ajax数据--原创)

最近需要一个下拉多选,本来想偷懒的,所以在网上百度了一番,最终还是发现没有一个符合自己要求的,所以我自己写了一个插件.下面是GIF动态效果图展示 相信大家已经看到效果了,接下来就是我的代码展示 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模拟select下拉框之多选</title> <style

去除select下拉框默认样式

去除select下拉框默认样式 select { /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ border: solid 1px #000; /*很关键:将默认的select选择框样式清除*/ appearance:none; -moz-appearance:none; -webkit-appearance:none; /*将背景改为红色*/ background:red; /*加padding防止文字覆盖*/ padding-right: 14px; } /*清除