一.自定义格式转换
1.定义一个类实现Converter
2.添加默认方法,进行格式转换
3.在SpringMvc.xml文件中进行配置最后还有挂在到注解驱动中
<!-- 加载注解驱动 -->
<mvc:annotation-drivenconversion-service="conversionService"/>
<!-- 转换器配置 -->
<beanid="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<propertyname="converters">
<set>
<beanclass="cn.itcast.springmvc.convert.DateConverter"/>
</set>
</property>
</bean>
二.SpringMVC框架的图片上传
上传文件的时候表单的设置
form表单中应该有一个属性enctype="multipart/form-data";
导入两个文件上传的jar包
commons-io-2.4.jar
commons-fileupload-1.2.2.jar
配置文件上传
<!-- 文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
controller类的编写:
方法中带有一个参数MultipartFile pictureFile(前端界面文件上传的name属性对象的名字,必须完全相同)
//获取图片完整名称
String fileStr = pictureFile.getOriginalFilename();
//使用随机生成的字符串+源文件扩展名组成新的文件名称,方式图片重名
String newfileName = UUID.randomUUID().toString()+fileStr.substring(fileStr.lastIndexOf("."));
//将图片保存到项目访问的路径中
pictureFile.transferTo(new File("文件路径"));
//将图片名称保存到数据库
三.json数据交互
-
第一步导入jackson的jar包在controller的方法中可以使用@RequestBody,让springMvc讲json格式字符串自动转换成java中的pojo页面json中的key要等与Java中pojo的属性名称
-
想要在界面中返回json格式
- 在方法添加注解
- @ResponseBody
- 返回值就是想要返回的对象
四.restful
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格,是对http协议的诠释。
- 资源定位:互联网所有的事物都是资源,要求url中没有动词,只有名词。没有参数
- Url格式:http://blog.csdn.net/beat_the_world/article/details/45621673
- 资源操作:使用put、delete、post、get,使用不同方法对资源进行操作。分别对应添加、删除、修改、查询。一般使用时还是post和get。Put和Delete几乎不使用。
<servlet-mapping>
<servlet-name>springmvc-servlet-rest</servlet-name>
<!-- 必须用/ -->
<url-pattern>/</url-pattern>
</servlet-mapping>
-
@RequestMapping(value="/viewItems/{id}"):{×××}占位符,请求的URL可以是“/viewItems/1”或“/viewItems/2”,通过在方法中使用@PathVariable获取{×××}中的×××变量。
-
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。 @ResponseBody
public viewItems(@PathVariable(“id”) String id,Model model) throws Exception{ … }
五…拦截器
-
定义一个拦截器类实现HandlerInterceptor
-
里面有三个方法
-
最后执行 执行时机:controller方法已经执行,ModelAndView已经返回 使用场景:记录日志
afterCompletion(…){ } -
中间执行 执行时机:controller方法已经执行,ModelAndView没有被返回 使用场景:可以在此方法中设置全局的数据处理业务
postHandler(…){ } -
最先执行 执行时机:controller方法没有被执行,ModelAndView没有被返回 使用场景:权限认证
preHandler(…){ }在springmvc.xml中进行配置
<mvc:interceptors> <mvc:interceptor> <!--拦截请求的路径 拦截所有必须配置成/**--> <mvc:mapping path="/**"/> <!--指定拦截器的位置--> <bean class="cn.itcast.springmvc.filter.HandlerInterceptor1"></bean> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="cn.itcast.springmvc.filter.HandlerInterceptor2"></bean> </mvc:interceptor> </mvc:interceptors>
实战:登陆权限认证
- 编写登陆的controller,编写跳转到登陆界面的方法,编写登陆验证方法
- 编写登陆界面
- 编写拦截器
运行过程:
-
任意访问一个界面,拦截器会拦截请求,hui验证session中是否有登陆信息
-
如果已经已登录,放行
-
如果未登录,跳转到登陆界面
-
-
在登陆界面中输入用户名密码,点击登陆按钮,拦截器会拦截请求如果是登陆路径放行
在controller中判断用户名密码是否正确,如果正确把登陆信息放到session中