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
<[email protected] 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
<[email protected] 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
<[email protected] 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
<[email protected] 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(二) - 风一样的少年 - 风一样的少年

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/12180.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论