一、controller三种配置方式
-
URL对应Bean 仅仅适用于小型应用 基本不使用
- 为URL分配Bean

- 通过注解的方式 重点
使用的处理类是org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
以下是使用注解的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 默认扫描该包下的所有注解 -->
<context:component-scan base-package="cn.lkangle.*"/>
<!-- 自动加载注解驱动 -->
<mvc:annotation-driven />
<!-- 使用默认方式处理静态资源 -->
<mvc:default-servlet-handler/>
<!--<mvc:resources mapping="/static" location="/static/**" />-->
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
二、result结果集实现转发和重定向
- 利用modelAndView实现转发 没有重定向
分为不用视图解析器和用视图解析器两种-
不用的
-
用的
需要在配置文件中添加
-
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/pages/" />
<property name="suffix" value=".jsp" />
</bean>
-
利用原始的httpservletresponse和httpservletrequest
需要注意的是,在重定向后面不能在出现return 也就是这种方式只能是void返回值 否则报错

-
使用springmvc转发和重定向
分为不用视图解析器和用视图解析器两种-
不用的
-
用的
-
-
小结
1、在springmvc转发中,根据返回字符串在视图中查找,如果有视图解析器则根据解析器的前后缀规则查找,进行转发或者重定向。
2、加上redirect后便是重定向。加上forward是转发,默认不加任何前缀也是转发。
3、在加上redirect或forward后,不论是重定向还是转发,都会先在控制器中查找对应的uri,如果没有才会到转发或重定向到对应的文件。此种情况在使用视图解析器中应注意
三、请求参数接收
- 普通表单参数
- 对象表单参数
- 集合表单参数
四、post乱码解决和restfull风格
-
post乱码解决配置
使用类: org.springframework.web.filter.CharacterEncodingFilter
- restfull风格
@GetRequest("/{id}/{day}/delete")
public void delete(@PathVariable int id, @PathVariable int day){ }
如此就能实现简单的restfull风格url
五、文件上传
- 导入commo-io和common-fileupload两个jar包
-
配置springmvc文件,添加文件上传支持
配置bean: multipartResolver
org.springframework.web.multipart.commons.CommonsMultipartResolver
-
编写文件上传控制器
-
上传测试
六、Json数据处理
- springmvc默认使用的是jackson处理json数据的转换
- 添加jackson相关jar包
-
编写控制器 需要在控制器中添加@ResponseBody注解,自动进行json数据转化
七、拦截器使用
-
实现handerinterceptor接口,也可以继承WebRequestHandlerInterceptorAdapter
-
实现对controller注解的拦截
-
配置文件编写
-
效果
最后贴上web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>SpringMvcStu</display-name>
<filter>
<filter-name>SpringFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpringFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
相关视频教程链接, 密码: e7d1
网友评论