转发 重定向 session

2017年12月26日 10:06:21 课


(1)String 字符串=request.getParameter("名字");


在WebRoot下新建一个welcome.jsp
index.jsp页面加入一个表单
    <form action="welcome.jsp" method="post">
    用户名:<input type="text" name="username"></input>
    密码:<input type="text" name="password"></input>
    <input type="checkbox" name="hobby" value="lanqiu"></input>篮球的
    <input type="checkbox" name="hobby" value="zuqiu"></input>足球的
    <input type="checkbox" name="hobby" value="paiqiu"></input>排球的
    <input type="checkbox" name="hobby" value="ymaoqiu"></input>羽毛球的
    <input type="submit" name="" value="提交"></input>
    </form>

 

 

 

 

 

 

 

 

 

 


welcome.jsp页面
    <%
    String uname=request.getParameter("username");
    String upwd=request.getParameter("password");
    String[] zu=request.getParameterValues("hobby");
   
    out.print(uname+"<br/>");
    out.print(upwd+"<br/>");
    for(String s:zu){
    out.print(s+"<br/>");
    }
     %>

 

 

 

 

 

 

 

 

 


(2)中文乱码问题
JSP默认编码格式是iso-8859-1不支持中文

首先修改当前JSP页面的编码格式
方法一 设置字符编码
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
方法二 打撒 再拼接


方法三 注意是URI不是URL 这个治本
apache-tomcat-7.0.47\conf下server.xml
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/> 

 

 

 

 

 

 

 

 

 

 


(4)转发
提交以后 欢迎页面
request.setAttribute("keyname", uname);//保存到转发里
request.setAttribute("keypwd", upwd);
//获得请求分发器,携带请求和响应过去 请求调度
request.getRequestDispatcher("login.jsp").forward(request, response);


登录页面 转发的话页面是能拿到参数的 重定向才是拿不到
    <%

//获得String类型
    String n1=request.getParameter("username");
    String p1=request.getParameter("password");

//根据属性名获得Object类型
    String n2=(String)request.getAttribute("keyname");
    String p2=(String)request.getAttribute("keypwd");


    out.println(n1+"<br/>");
    out.println(p1+"<br/>");
    out.println("<br/>");
    out.println(n2+"<br/>");
    out.println(p2+"<br/>");
     %>


(5)转发和重定向的区别
转发是服务器行为 多用于查询 是一次性请求 可以携带参数 URL不会改变
request.getRequestDispatcher("login.jsp").forward(request, response);
重定向是客户端行为 多用于增删改 是两次请求了 一般不可以带参数 除非用问号?拼接参数 URL会改变
response.sendRedirect("loginOk.jsp");
重定向拿不到一次请求的东西

 

 


session是一次回话
只要是一个页面跳转就是一次回话
如果两个窗口就是两个回话了
session.setAttribute("key",值);
session.getAttribute("key");只要在一个回话内就可以拿到




session.getId();//能看到sessionid


session存在服务器会造成服务器压力增大 性能下降 要清一下
回话怎么中断呢?


session.removeAttribute("skeyname");//根据键删除属性 但是session还是在的 这种方法不好用


session.invalidate();//session失效 没有session也不存在了


//session.setMaxInactiveInterval(30);//毫秒后失效


web.xml文件加上一句,30分钟后session失效
<session-config><session-timeout>30</session-timeout></session-config>

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值