JavaWeb参数传递方式和ServletContext

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();

你可能感兴趣的:(java)