1. 使用java static
2. 使用sendRedirect()带参数的重定向
response.sendRedirect(“/web应用/资源URI?参数名1=参数值1&参数名2=参数值2...”);
sendRedirect可以去外边URL。
3. 使用forward在web服务器里request转发(尽量使用此方法)
request.getRequestDispatcher("/资源URI").forward(request,response)
forward只能去当前的WEB应用的资源。
forward的转发多次,请求只有一次,URL地址不变。
4. 使用session 传递
User user = new User();
user.setName("xiaoming");
user.setPassword("123456");
放入session
request.getSession.setAttribute("userObj",userObj);
取出session
User user = (User)request.getSession.getAttribute("userObj");
设置session六十秒后失效
session.setMaxInactiveinterval(60)
每次打开浏览器的session都不同,这跟http请求JSESSIONID有关;如果没有JSESSIONID,服务器将会自动给你创建一个并返回。
5. cookie
创建cookie首先考虑如何创建,然后考虑他的生命周期,最后要写到浏览器临时文件里
//创建cookie创建cookie。如果重名就会替换存在的cookie值.
Cookie cookie = new Cookie("name","shunping1");
//设置cookie的生命周期。不设置,则该cookie的生命周期当浏览器关闭时,就消亡
cookie.setMaxAge(3600);// 单位秒
response.addCookie(cookie);//把cookie信息回写给浏览器
读取cookie
Cookie []cookies = request.getCookies();
for(int i=0; i < cookies.length;i++){
out.println(cookies[i].getName() + "<br/>");
out.println(cookies[i].getValue() + "<br/>");
}
删除cookie
// 先得到该cookie
Cookie cookies[]=request.getCookies();
for(Cookie cookie: cookies){
if(cookie.getName().equals("id")){
System.out.println("id");
cookie.setMaxAge(0);// 删除
// 一定带上这句话,否则不能删除
response.addCookie(cookie);
}
}
存入中文
String val = java.net.URLEncoder.encode("名称","utf-8");
Cookie cookie = new Cookie("name",val);
取出中文
String val = java.net.URLDecoder.decode(cookie.getValue(), "utf-8");
out.println("name ="+val);
不同的浏览器cookie的大小和数量不同。
ServletContext共享数据
ServletContext也可以转发跟forward一样
this.getServletContext().getRequestDispatcher("/资源url").forward(request, response);
做任何操作必须先获取:
servletcontext = this.getServletContext();
添加属性:
servletcontext.setAttribute(string,object);
取出属性
String val = servletcontext.getAttribute(“属性名”)
删除
String val = setvletContext.removeAttribute(“属性名”);
SpringMVC中获取
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();