1)九大内置对象
名称 | 类型 | 含义 | 获取方式 |
request | HttpServletRequest | 封装所有请求信息 | 方法参数 |
response | HttpServletResponse | 封装所有响应信息 | 方法参数 |
session | HttpSession | 封装所有会话信息 | req.getSession() |
application | ServletContext | 项目所有信息 | getServletContext(); request.getServletContext() |
out | PrintWriter | 输出对象 | response.getWriter() |
exception | Exception | 异常对象 | |
page | Object | 当前页面对象 | |
pageContext | pageContext | 获取其他对象 | |
config | ServletConfig | 配置信息 |
2)四大作用域
1.page 在当前页面不会重新实例化
2.request 在一次请求中同一个对象,下次请求重新实例化一个request对象。
3.session 一次会话中只有一个session对象,依赖于cookie,只要Cookie中传递的Jsessionid不变,Session就不会重新实例化(在不超过默认生效时间的情况下)
实际的有效时间: A 浏览器关闭,Cookie失效
B默认时间 在时间范围内无任何交互。需在tomcat的web.xml中配置
30
4.application:只有在tomcat启动项目时实例化,只有当关闭tomcat服务器时销毁application
1)使用原生Servlet
在HandlerMethod参数中添加作用域对象
@RequestMapping("demo1")
public String demo1(HttpServletRequest abc,HttpSession sessionParam){
//request 作用域
abc.setAttribute("req", "req 的值");
//session 作用域
HttpSession session = abc.getSession();
session.setAttribute("session", "session 的值");
sessionParam.setAttribute("sessionParam","sessionParam 的值");
//appliaction 作用域
ServletContext application = abc.getServletContext();
application.setAttribute("application","application 的值");
return "/index.jsp";
}
2)使用Map集合
把 map 中内容放在 request 作用域中,spring 会对 map 集合通过 BindingAwareModelMap 进行实例化
@RequestMapping("demo2")
public String demo2(Map map){
System.out.println(map.getClass());
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 mav = new ModelAndView("/index.jsp");
mav.addObject("mav", "mav 的值");
return mav;
}
1)在访问资源需要下载的时候,如果响应头中没有设置Content-Disposition,浏览器默认按照inline值进行处理
inline:能显示则显示,不能显示就下载
2)只需要修改响应头中 Context-Diposition=“attachment;filename=文件名”
attachment 下载,以附件形式下载
filename 就是下载时显示的下载文件名
3)实现步骤
2.在 jsp 中添加超链接,设置要下载文件
在 springmvc 中放行静态资源 files 文件夹
下载
3.编写控制器方法
@RequestMapping("download")
public void download(String fileName,HttpServletResponse res,HttpServletRequest req)throws IOException{
//设置响应流中文件进行下载
res.setHeader("Content-Disposition","attachment;filename="+fileName);
//把二进制流放入到响应体中.
ServletOutputStream os = res.getOutputStream();
String path =req.getServletContext().getRealPath("files");
System.out.println(path);
File file = new File(path, fileName);
byte[] bytes =FileUtils.readFileToByteArray(file);
os.write(bytes);
os.flush();
os.close();
}
1)基于apache的commons-fileupload.jar
2)Spring中MultipartResovler组件的作用
1.把客户端上传的文件流转换成MutipartFile封装类
2.通过MutipartFile封装类获取到文件流。
3)表单数据类型分类
在