SpringMVC学习笔记
)
springmvc配置文件
<!-- 前端控制器 -->
<servlet>
<servlet-name>springmvc<rvlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet<rvlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<rvlet>
<servlet-mapping>
<servlet-name>springmvc<rvlet-name>
<url-pattern>*.action</url-pattern>
<rvlet-mapping>
*.action代表一切以.action结尾的访问都会交给前端控制器进行处理
SpringMVC工作流程
srpingmvc 有五个重要组件 DispatcherServlet(前端控制器) HandlerMapping(处理器映射器) Handler(处理器)
HandlAdapterr(处理器适配器)View Resolver(视图解析器)
用户发送请求到后台 请求交给 中央控制器 中央控制器调用处理器映射器找到对应的处理器(即通过用户访问的action来找到与之对应的方法。如 用户访问login.action?username=‘zhang’&passworld='123456’springmvc会找到带有requestmapping(“login.action”) 注解的方法 只是找到并不会立即执行)返回处理器执行链 通过处理器适配器调用合适的处理器(我理解为通过处理器适配器找到与请求对应的方法并执行(有拦截器的话先执行拦截器))在我们执行完对应的方法后返回ModelAndView(Model 模型 View 视图,就是封装的数据模型和用于展示结果的视图(一般情况下是jsp页面))ModelAndView被返还给前端控制器前端控制器无法处理ModelAndView 调用视图解析器对 ModelAndView 进行解析 将Model里被封装的数据赋值给view
将view返还给前端控制器进行渲染转换成html展示。
SpringMVC注解
@Controller : 作用使得框架可以扫描到文件
@RequestMaping :定义与方法相对应的url和请求方式限制 @requestmapping(value=“url.action” , method="")
@RequestParam :用于参数绑定 属性有三个 value required defaultValue
@RequestBody: 作用将请求中的json或xml参数转换成java对象
@ResponseBody:作用将返回的对象转换成json或xml形式
方法返回值
1 返回ModelAndView
modelAndView.addObject("msg", "登陆失败");
modelAndView.setViewName("login/login.jsp");
return modelAndView;
springmvc会返回login文件夹下的login.jsp并将msg存入域中jsp页面中只要{msg}便可展示“登陆失败”的信息
2 返回 Void
可以在方法形参上 加入 request 和 response就可以通过request转发通过response重定向或者响应结果
3 返回String
返回 逻辑视图名通过视图解析器分析为物理视图地址
return “/WEB-INF/jsp/login.jsp”; 返回 文件夹jsp下的login.jsp视图
重定向
return"redirect:tologin.action";重定向到login.action 重定向不携带数据
转发 return"forward:tologin.action";转发到login.action可以携带 request
异常处理器
<bean id="handlerExceptionResolver" class="cn.itcast.ssm.controller.exceptionResolver.CustomExceptionResolver"/>
class为实现异常处理接口文件的全路径名称
异常处理器就是程序抛出异常时所做的相应操作
在springmvc中实现HandlerExceptionResolver接口并在配置文件中添加异常处理器配置。
这样当系统中发生异常时就会携带相应参数进入实现类执行实现类中的resolveEcception方法我们可以在这个方法中执行一些操作如 将错误信息通知给技术人员并返回一个错误页面。
拦截器
<mvc:interceptors>
<!--多个拦截器,顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean/ class="cn.itcast.springmvc.filter.HandlerInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
class=“实现HandlerInterceptor接口文件的全路径名”
在springmvc中实现HandlerInterceptor接口并在配置文件中进行相应配置及拦截规则
便可对符合拦截条件的访问进行拦截实现类中会有三个方法供我们使用。
他们分别会在 controlller执行前 返回视图前 和返回试图后被调用 据此可以帮助我们实现不同的功能
比如 controller执行前会执行的方法可以帮助我们做登陆校验等。
文件上传
先在Spring上配置多媒体解析器
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大为5MB -->
<property name="maxUploadSize">
<value>5242880<value>
</property>
</bean>
value标签中的数字代表上传文件的大小限制 单位为B 102410245 = 5242800 意思是最大只接收不超过5M的文件可以更改
在SpringMVC的方法中 我们可以在方法形参中加入 MultipartFile 类型的参数只要参数名称一样那么请求中的文件就可以赋值给 MultpartFile 我没可以通过MultipartFile类中自带的transferTo方法将文件复制到本地磁盘或者通过HttpClien或者FastDFSClient之类的工具将文件上传到服务器。