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>