zoukankan      html  css  js  c++  java
  • Web(二)

    一、数据的传递--转发和重定向
    1、创建一个login.jsp页面 
    <body>
         <%-- action:我们需要提交的地址  method:请求的方式 --%>
        <form action="doMain.jsp" method="get">
          <table>
            <tr>
               <td>用户名:</td>
               <td><input  type="text" name="userName"></td>
            </tr>
            <tr>
               <td>密码:</td>
               <td><input  type="password" name="password"></td>
            </tr>
            <tr>
               <td><input  type="submit" value="登录"></td>
            </tr>
          </table>
        </form>
      </body>
    2、创建对应的处理页面doMain.jsp
    <body>
       <h1>登录成功</h1> 
    <%-- login.jsp中的form表单 get方式请求乱码 
        01.治标不治本    不推荐使用
        String  userName=new String(name.getBytes("iso-8859-1"),"utf-8");
        02.治本
        在服务器中的conf文件夹中找到server.xml文件中的Connector节点中  新增属性
       URIEncoding="UTF-8"
     --%>
        <%
          //根据login.jsp页面 name的属性值  获取 value  
          //post乱码 解决   是不是每个页面都需要设置 请求编码格式??? 后面 我们会用Filter
          request.setCharacterEncoding("utf-8");  //请求的编码
          response.setCharacterEncoding("utf-8"); //响应的编码
          String  name=request.getParameter("userName");  //获取用户名
          String  pwd=request.getParameter("password");  //获取密码
        %>
      
       <%-- 就是想把login页面的值 传递给last.jsp   --%>
        <%
        out.print("用户名:"+name);
        out.print("密码:"+pwd);
        //把从login页面拿到的值 存储到了 request作用域中了
        request.setAttribute("userName", name);
        request.setAttribute("password", pwd);
         //转发到了last.jsp  携带了数据     last页面能取得数据
        //request.getRequestDispatcher("last.jsp").forward(request, response);
         //重定向last.jsp   数据都会丢失!   last页面不能取得数据
         response.sendRedirect("last.jsp");
        %>
       
         <%-- get请求  --%>
        <a  href="last.jsp?userName=小黑黑2&password=123456">跳转到最后一个界面</a>
      </body>
    3、创建last.jsp看能不能获取login.jsp的值
     <body>
      <h1>last.jsp</h1>
      <%
      //在doMain中使用了转发后   能直接获取  login页面的值
      String  name=request.getParameter("userName");  //获取用户名
      String  pwd=request.getParameter("password");  //获取密码
      out.print("用户名:"+name);
      out.print("密码:"+pwd);
      %>
     
       <%
       //从request.getAttribute()取值
        request.setCharacterEncoding("utf-8");  //请求的编码
        String  name1=(String)request.getAttribute("userName");//获取用户名
        String  pwd2=(String)request.getAttribute("password");  //获取密码
        out.print("用户名:"+name1);
        out.print("密码:"+pwd2);
        %>
      </body>
    二、通过request获取界面的多个值
    5、创建request1.jsp页面
    <form action="request2.jsp" method="post">
          <input type="checkbox"  name="box" value="别玩手机">别玩手机"
          <input type="checkbox"  name="box" value="就玩手机">就玩手机"
          <input type="checkbox"  name="box" value="还玩手机">还玩手机"
          <input type="checkbox"  name="box" value="真玩手机">真玩手机"
          <input type="checkbox"  name="box" value="玩手机">玩手机">
          <button type="submit">提交</button>
      </form>
    6、创建request2.jsp页面获取request1.jsp的值
    <body>
      <%
      request.setCharacterEncoding("utf-8");
      //获取选中复选框的值
     String [] boxs=request.getParameterValues("box");
      //首先进行判断  必须先判断非空
      if(boxs!=null&&boxs.length!=0){
          for(String box:boxs){
              out.print(box+"<br/>");
          }
      }else{
          //重定向到request1界面
          response.sendRedirect("request1.jsp");
      }
      %>
     
          <h1>request对象常用的方法</h1>
         获取http请求中使用的方法名称 <%=request.getMethod() %><br/>
         获取http请求中调用servlet的url部分 <%=request.getServletPath() %><br/>
         获取http请求中MIME类型 <%=request.getContentType() %><br/>
         获取请求中服务器主机名称 <%=request.getServerName() %><br/>
         获取请求中服务器的端口号名称 <%=request.getServerPort() %><br/>
         获取请求中服务器的ip地址 <%=request.getRemoteAddr()%><br/>
         获取请求中服务器的ip地址 <%=request.getRemoteHost()%><br/>
         获取请求中使用的协议 <%=request.getScheme() %><br/>
      </body>
    三、session
      1、创建session1jsp
    <body>
        <form action="session2.jsp" method="post">
          <table><tr> <td>用户名:</td>
               <td><input  type="text" name="userName"></td></tr>
            <tr> <td>密码:</td>
               <td><input  type="password" name="password"></td> </tr>
            <tr><td><input  type="submit" value="登录"></td></tr> </table>
        </form> </body>
    2、创建session2.jsp
    <body>
      <%
        request.setCharacterEncoding("utf-8");
      //获取session1.jsp的信息
        String name= request.getParameter("userName");
        String pwd= request.getParameter("password");
        //把信息保存到session
        session.setAttribute("sessionName", name);
        session.setAttribute("sessionPwd", pwd);
        //把信息保存到request
        request.setAttribute("requestName", name);
        request.setAttribute("requestPwd", pwd);
        //重定向  request作用域的值消失  session呢???
        response.sendRedirect("session3.jsp");
    %>
    <form action="session3.jsp" method="post">
          <table>
            <tr> <td>银行卡密码:</td>
               <td><input  type="text" name="card"></td></tr>
            <tr><td><input  type="submit" value="登录"></td></tr>
          </table></form></body>
    3、创建session3.jsp
    <body>
      <%
        request.setCharacterEncoding("utf-8");
         //获取银行卡密码
        String card= request.getParameter("card");
        //清空session中指定的属性
        session.removeAttribute("sessionPwd");  //删除了密码
         //从session中获取数据
        String  name=(String)session.getAttribute("sessionName");
        String  pwd=(String)session.getAttribute("sessionPwd");
         //从request中获取数据
        String  rName=(String)session.getAttribute("requestName");
        String  rPwd=(String)session.getAttribute("requestPwd");
        //让session失效  以秒为单位
        session.setMaxInactiveInterval(3);  
      %>
    <%-- 设置session的失效
      01.在tomcat中的conf文件夹下面的web.xml   分钟 计算的 默认30分钟
        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
       02.项目中的web.xml中也可以设置    自定义    项目中的为准  分钟
       <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
       03.session.setMaxInactiveInterval(s) 当前的会话时间  不是整个web
     --%> 
      session取得的数据:<br/>
      您的用户名是:<%=name %><br/>
      您的密码是:<%=pwd %><br/>
      您的银行卡密码是:<%=card %><br/>
      <hr/>
        request取得的数据:<br/>
      您的用户名是:<%=rName %><br/>
      您的密码是:<%=rPwd %><br/></body>
    4、创建一个User类
    public class User {   
        private  String  name;
        private  String  pwd;   
        @Override
        public String toString() {
            return "User [name=" + name + ", pwd=" + pwd + "]"; }
        public User() {
            super(); }
        public User(String name, String pwd) {
            super();
            this.name = name;
            this.pwd = pwd; }
        public String getName() {
            return name; }
        public void setName(String name) {
            this.name = name; }
        public String getPwd() {
            return pwd;}
        public void setPwd(String pwd) {
            this.pwd = pwd;}
      
    }
    5、创建1.jsp
    <%@page import="cn.bdqn.bean.User"%>
      <body>
      <%
       //创建一个User对象
         User  user=new User("admin","123456");
      //把对象放进session作用域
         session.setAttribute("user", user);
      %>
        <a  href="session/2.jsp">跳转第二个界面</a>
      </body>
    6、创建2.jsp
    <body>
       <%
        //重定向
         response.sendRedirect("3.jsp");
       %>
      </body>
    7、创建3.jsp
    <%@page import="cn.bdqn.bean.User"%>
      <body>
        <%
        User user=(User)session.getAttribute("user");
        out.print(user.getName());
        %>
         <%=session.getAttribute("user")%>
      </body>
    四、cookie
    1、1.jsp
    <body>
        <form action="cookie/2.jsp"  method="post">
          姓名:<input type="text" name="userName"/>
           <button type="submit">登录</button>
        </form> 
      <%
        //获取第二个界面的信息
         String msg=(String)request.getAttribute("msg");
       //有可能Null
       if(msg!=null){
           out.print(msg);
       }
      %>
      </body>
    2、2.jsp
    <%@page import="java.net.URLEncoder"%>
      <body>
         <%
         request.setCharacterEncoding("utf-8");  //解决post请求乱码问题
           //获取登陆的用户名
         String name =request.getParameter("userName");
         //判断用户名是不是admin
         if(name.equalsIgnoreCase("admin")){
             //在返回到第一个界面时 给一个提示
             request.setAttribute("msg", "不允许使用admin登录!");
             //转发
             request.getRequestDispatcher("1.jsp").forward(request, response);
         }else{
             //成功! 跳转到下个界面,并把用户名传递下去
             //01.创建cookie     如果有中文  必须需要设置编码格式
             Cookie cookie=new Cookie("user",URLEncoder.encode(name,"utf-8"));
             //02.如果想给cookie设置有效期  必须在增加之前
             cookie.setMaxAge(20);
             //03.给响应新增cookie
             response.addCookie(cookie);
             //重定向
             response.sendRedirect("3.jsp");   
         }
         %>
      </body>
    3、3.jsp
    <%@page import="java.net.URLDecoder"%>
      <body>
      <%
         //获取第二个界面的cookie
        Cookie [] cookies= request.getCookies();
        String  name="";
        //遍历数组  获取我们想要的  user
        for(Cookie cookie:cookies){
            if(cookie.getName().equals("user")){  //找到了
                //进行中文的解码
                name=URLDecoder.decode(cookie.getValue(), "utf-8");
                out.print("用户名====》"+name);
            }
        }
      %>
      </body>
    Web(二) - 风一样的少年 - 风一样的少年
  • 相关阅读:
    漂亮的代码5:数组与字符一样的操作
    漂亮的代码4:缓存器的妙用
    漂亮的代码3:flatten 一个数组
    漂亮的代码2:遍历文件夹目录,使用promise
    漂亮的代码1:计算器
    nodejs 代码设计模式1:同步函数变异步
    [翻译]现代java开发指南 第二部分
    Httpclient远程调用WebService示例
    Java代码使用正则验证和常用工具方法
    简单将集合的内容转为字符串
  • 原文地址:https://www.cnblogs.com/HHR-SUN/p/7043513.html
Copyright © 2011-2022 走看看