JSP实现数据传递和保存
本课目标
掌握request和response的使用
解决页面中出现的中文乱码
掌握转发和重定向的区
别掌握session存取数据
理解cookie
理解application
1.表单提交数据
请求对象:request
public String getParameter(String name)
示例
HTML代码:
JSP代码:String userName = request.getParameter(“userName”);
get与post区别:
request对象常用方法:
方法名称 | 说明 |
---|---|
String getParameter(String name) | 根据表单组件名称获取提交数据 |
String[ ] getParameterValues(String name) | 获取表单组件对应多个值时的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求 |
2.中文乱码
JSP中默认使用的字符编码方式:iso-8859-1,不支持中文
常见的支持中文的编码方式
编码方式 | 收录的字符 |
---|---|
gb2312 | 常用简体汉字 |
gbk | 简体和繁体汉字 |
utf-8 | 所有国家需要的字符 |
解决中文乱码
设置请求和响应的编码方式
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);
<%@ page language=“java” contentType=“text/html; charset=utf-8”%>
get请求出现乱码
治标的方法:new String( s.getBytes(“iso-8859-1”), “utf-8” );
治本的方法:配置tomcat\conf\server.xml文件
3.转发和重定向
转发
RequestDispatcher对象
forward()方法
1、request.getRequestDispatcher("url").forward(request, response)
2、<jsp:forward page="url" />
重定向
将用户请求重新定位到一个新的URL
response.sendRedirect("url")
转发与重定向的区别-1
转发的工作方式
重定向的工作方式
转发与重定向的区别
比较项 | 转发 | 重定向 |
---|---|---|
URL变化 | 否 | 是 |
重新发出请求 | 不会 | 会 |
是否携带请求 | 是 | 否 |
目标URL要求 | 仅本Web应用 | 任意URL |
4.session的工作方式
每个session都有一个唯一的sessionid
public String getId();
session.getId();
会话的清除和过期
(session的数据是在服务器端的,服务器保存的会话数据量会越来越大,从而导致性能问题)
若没有清理机制,会导致性能问题或服务器崩溃
程序主动清除session数据
设置会话失效:session.invalidate();
移除会话的一个属性
public void removeAttribute(String name);
用法:session.removeAttribute("userName");
服务器主动清除长时间没有再次发出请求的session
设置会话过期时间
方法一:
public void setMaxInactiveInterval(int interval);
方法二:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
5.使用cookie自动填写用户名
cookie以文件方式保存数据
添加数据
public void addCookie(Cookie cookie)
获取数据
public Cookie[] getCookies()
设置有效期
public void setMaxAge(int expiry)
用户可以禁用cookie
6.application实现计数器
分析
每个用户都需要使用访问次数
application可在整个项目中共享使用数据
使用application实现计数器
每次访问该页面,计数器加1
解决方法
public void setAttribute(String name, Object object)
public Object getAttribute(String name)