zoukankan      html  css  js  c++  java
  • web02--jsp数据传递

    1.创建一个login.jsp登陆界面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>login.jsp</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <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>
    </html>

    2.创建对应的处理界面doMain.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
    contentType="text/html; charset=ISO-8859-1"
    %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>doMain.jsp</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <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>
    </html>

    3.创建last.jsp看能不能获取login.jsp的值?

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>last.jsp</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <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>
    </html>

     4.通过request获取界面的多个值

    01.创建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>

    02.创建request2.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>

                             

    转发和重定向

  • 相关阅读:
    Mvc分页:为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集
    从零开始一起学习SLAM | 相机成像模型
    从零开始一起学习SLAM | 为啥需要李群与李代数?
    从零开始一起学习SLAM | 三维空间刚体的旋转
    从零开始一起学习SLAM | 为什么要用齐次坐标?
    从零开始一起学习SLAM | C++新特性要不要学?
    从零开始一起学习SLAM | SLAM有什么用?
    从零开始一起学习SLAM | 学习SLAM到底需要学什么?
    2019年度【计算机视觉&机器学习&人工智能】国际重要会议汇总
    从零开始一起学习SLAM | 为什么要学SLAM?
  • 原文地址:https://www.cnblogs.com/xtdxs/p/7094442.html
Copyright © 2011-2022 走看看