标签:SpringMVC、SSM、拦截器、代理对象
1.SpringMVC概述
- 是什么?
为了让web开发更简单、更高效、便于维护升级,引入了SpringMVC。
从名字的角度看,SpringMVC是Spring框架的一个子模块,可以理解为Spring+MVC,这里的MVC是Model、View、Controller是SpringMVC三个核心概念对象的缩写。
从底层实现来看,SpringMVC可以看成是Servlet的高级版本,是加上一些其他功能的框架而已。
从容器的角度看,Spring是一个容器,通过ioc控制管理对象,因此SpringMVC也是一个容器,不过存放的是控制器对象@Controller。
- 核心概念?
在Springmvc中,有三个核心概念,如上面的图所示:
第一个:Controller控制器
该控制器分为用于调度的中央(前端)控制器和用于响应的后台@Controller对象
第二个:Model数据
Model数据是后台数据调用Service方法得到的数据,将其放在Springmvc容器中。
第三个:View视图
View是视图,用于页面转发等功能。
2.SpringMVC配置初探
第一步:创建maven-web项目,加入Spring-mvc依赖,servlet依赖,jsp依赖
第二步:web.xml注册中央控制器,设置为初始时加载设置;
中央控制器控制范围→servlet mapping、重设springmvc配置文件路径乱码过滤器。
<servlet> <servlet-name>Spring_mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--表示tomcat服务器启动时就创建该对象,数字越低优先级越高--> <load-on-startup>1</load-on-startup> <!--等价于: webapplicationcontext ctx = new classpathxmlapplicationcontext(“springmvc.xml”) getServletContext().setAttribute(key,ctx) 容器底部可以看成是map.put("Mycontroller对象",mycontroller)--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:Spring_mvc.xml</param-value> </init-param> </servlet> <!-- 有两种映射方式,第一种:常规的通过路径,第二种,通过通配符--> <servlet-mapping> <servlet-name>Spring_mvc</servlet-name> <url-pattern>/</url-pattern> <!--<url-pattern>*.dO</url-pattern>--> </servlet-mapping> <filter> <filter-name>中文乱码过滤器</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> <init-param> <!--强制HttpServletRequest请求对象使用encoding编码--> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <!--强制HttpServletResponse应答对象使用encoding编码--> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>中文乱码过滤器</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
【注意】在post方法中可能会出现乱码情况,此时需要配置上面的过滤器。
第三步:写处理方法,类头加上@Controller注解,方法加上@RequestMapping地址地址映射;
@Controller public class mycontrol { @RequestMapping("/some.do") public ModelAndView dosome(String name,int age) { System.out.println("mycontroller的dosome方法执行了"); ModelAndView mv = new ModelAndView(); mv.addObj