九大内置对象和四大作用域及作用域传值的几种方式
九大内置对象
1、request:
类型:HttpServletRequest.
含义:封装所有请求信息
获取方式:方法参数
2、response:
类型:HttpServletResponse。
含义:封装所有响应信息
获取方式:方法参数
3、session:
类型:Httpsession。
含义:封装所有会话信息。
获取方式:req.getsession();
4、application:
类型:ServletContext。
含义:所有信息
获取方式:getServletContext();req.getSetvletContext();
5、out:
类型:PrintWriter
含义:输出对象
获取方式:resp.getWriter();
6、exception:
类型:Exception
含义:异常对象
7、page:
类型:Object
含义:当前页面对象
8、pageContext:
类型:PageContext
含义:获取其他对象
9、config:
类型:ServletConfig
含义:配置信息
四大作用域
1、page
在当前页面不会重新实例化。
2、request
在一次请求中都是同一个对象,下次请求重新实例化一个request对象。
3、session
一次会话。
只要客户端Cookie中传递的Jsessionid不变,Session就不会重新实例化(不超过默认时间)
浏览器关闭,Cookie失效
默认时间:在时间范围内无任何交互。(在web.xml中配置)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
4、application
只有tomcat启动项目时才实例化,关闭tomcat时销毁application
SpringMVC作用域传值的几种方式
1、使用原生servlet
在HandleMethod参数中添加作用域对象
@RequestMapping("demo")
public String demo(HttpServletRequest req,HttpSession session) {
//request作用域传值
req.setAttribute("req", "req的值");
//session作用域传值
HttpSession reqSession = req.getSession();
reqSession.setAttribute("reqSession", "reqSession的值");
session.setAttribute("session", "session的值");
//application作用域传值
ServletContext application = req.getServletContext();
application.setAttribute("appllication", "application的值");
return "/index.jsp";
}
2、使用Map集合
把map中内容放到request作用域中
spring会对map集合通过BindingAwareModelMap进行实例化
@RequestMapping("demo2")
public String demo2(Map<String,Object> map){
map.put("map","map的值");
return "/index.jsp";
}
3、使用SpringMVC中Model接口
把最终内容放到request作用域中
@RequestMapping("demo3")
public String demo3(Model model){
model.addAttribute("model","model的值");
return "/index.jsp";
}
4、使用SpringMVC中的ModelAndView类
@Requestmapping("demo4")
public ModelAndView demo4(){
ModelAndView modelAndView = new ModelAndView("/index.jsp");
modelAndView.addObject("modelAndView","modelAndView的值");
return "modelAndView";
}
文件下载
1、访问资源时响应头如果没有设置Content-Disposition,浏览器默认按照inline值进行处理。(inline能显示就显示,不能显示就下载。)
2、只需修改响应头中Context-Disposition=“attachment;filename=文件名”(attachment下载:以附件形式下载。filename=:就是下载时显示的下载的文件名)
文件上传
1、基于apache的commons-fileupload.jar完成文件上传
2、MultipartResovler作用:
(1):把客户端上传的文件流转换成MultipartFile封装类
(2):通过MultipartFile封装类获取到文件流