- Spring MVC执行过程
- 客户端的请求提交到dispatcherServlet
- DispatcherServlet查询一个或者多个handlermapping ,找请求的Controller
- DispatcherServlet将请求提交给Controller, Controller调用完毕后返回modelAndView
- DispatcherServlet查询一个或多个对应的前端控制器,将modelAndView传递给指定的前端控制器
- 将渲染完的视图返回给客户端
- SpringMVC的Controller为单例的尽量不要设置属性,而是在方法中
- @RequestMapping注解用在类上面代表该类方法的父路径
- SpringMVC与Struts2的主要区别
- SpringMVC的前端控制器为一个Servlet 而Struts为Filter
- SpringMVC的Controller为单例,而Struts2的Action为多例
- SpringMVC是通过将request中的内容解析为形参,将相应和页面封装为Modelandview对象,struts2是采用值栈来存储请求和相应
- SpringMVC的拦截器
- 类实现接口HandlerInterceptor,实现方法,方法分别对应方法执行前 , 执行后 , 页面渲染后
- 然后在配置文件中配置拦截器
- 多个拦截器一起执行的时候preHandler按照配置的顺序执行,剩下的两个拦截器都要在preHandler返回为True时才能执行.
- postHandler和afterCompletion按照配置顺序的逆序调用
- json
- @ResponseBody 输出json
- @requestbody 接受json 转化为pojo
- 上传文件
- 前端规则
- 在配置文件中配置多媒体
- 在Controller中用MultipartFile来接受文件
- 三大组件和核心
- 核心 : DispatcherServlet(前端控制器)
- 三大组件 :
- ViewResolver : 视图解析器()
- HandlerMapping : 处理器映射器组件(查找路径名对应的Handler)
- HandlerAdapter : 处理器适配器组件(执行Handler)
- 主要的注解
- @requestmapping() // 方法的访问路径value,method=post 限制请求的方式为get/post
- @Controller
- @ResponseBody
- @RequestBody
- @
- 拦截规则
- /* 拦截所有,包括jsp
- / 拦截除了jsp以外的资源
- Controller的返回值
- ModelAndView : 返回视图和参数
- Model : 在方法中传递Model,返回值为String , 直接return 视图
- Void : 什么也不反回
- 重定向和请求转发
- 在路径前面添加关键字
return ‘redirect:/item/itemlist.action‘
return ‘forward:/item/itemlist.action‘
- 在路径前面添加关键字
- 参数绑定
public ModelAndView toEdit(Integer id,HttpServletRequest request,HttpServletResponse response,HttpSession session)
- 异常处理
- 继承HandlerExceptionResolver 实现对应的方法,对错误进行处理
- springmvc配置
<bean class="com.lyh.exception.CustomerException"></bean>
- 拦截提交参数中包含"type=test"字符串
可以在@RequestMapping注解里面加上params="type=test"
- SpringMvc用什么对象从后台向前台传递数据的
- 通过ModelMap对象,可以在这个对象里面用put方法,把对象加到里面,前台就可以通过el表达式拿到
- 怎么样把ModelMap里面的数据放入Session里面
- 可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key
- SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决
- 是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段
时间: 2024-10-09 17:53:21