一、SSM框架结构图
springMVC就是controller层的框架,它封装了接收参数,封装到实体,和页面跳转的方法。极大地简化了代码量,也便于查阅和修改配置
二、springmvc流程图
跟着流程来写一个springmvc的demo
1.引入相关jar包
2.在web.xml中配置DispatcherServlet,(ctrl+shift+T可以获取完整路径)
<servlet> <!-- springMVC的配置名必须为 '{servlet-name}-servlet.xml' 或者自定义路径 contextConfigLocation --> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
3.设置mvc配置文件 springMVC-servlet.xml, 这里名字不能错
配置handlerMapping
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置一个handlerMapping,不配置的话默认有一个 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> </beans>
4.创建Controller类,继承AbstractController类
@Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { ModelAndView mv=new ModelAndView(); mv.setViewName("login");//返回的视图名(会经过拼接) mv.addObject("username","Hello World");//设置转发的request属性和值 return mv; }
5.在配置文件中继续添加刚才的Controller信息,和视图解析器
<!-- 注册自己的controller类 --> <bean name="/my.do" class="com.zhiyou100.cyf.controller.MyController"><!--这里/my.do是访问路径,即访问该路径就调用class的MyController类--> </bean> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"/> <property name="suffix" value=".jsp"/> </bean>
具体流程:
- 客户发出请求。http://localhost:8080/springmvc-01/my.do
- 到达web.xml文件中 DispatcherServlet.查看是否符合url的要求
- DispatcherServlet就会查询springmvc的配置文件。找HandlerMapping,其根据bean的name查找相应的Controller
- 找到我的MyController类。执行该类中handleRequestInternal方法。
-
根据返回的modelAndView在找springmvc配置文件中视图解析器,把viewName和prefix以及suffix做了一个拼接。把拼接的页面展示给客户。
三、常见的HandlerMapping
1.BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类。默认的mapping
2. SimpleUrlHandlerMapping 根据bean的id查找对应的Controller类。
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/my.do">my1</prop> </props> </property> </bean>
<!-- 根据bean的id查找对应的Controller类 --> <bean id="/my.do" class="com.zhiyou100.cyf.controller.MyController"></bean>
3. ControllerClassNameHandlerMapping 根据controller类的名字找到对应的Controller。
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean> <bean class="com.zhiyou100.cyf.controller.MyController"></bean>
地址直接输入/myController就可以访问该controller,注意:controller名称除Controller以外的其他单词必须都小写,否则找不到,如MyController1 地址应为/mycontroller1
4.使用注解来替代配置信息,这里没有内容辅助,可以通过官方文档在头标签中添加相应的内容辅助
<?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-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
1)引入aop的jar包 spring-aop-4.2.2.RELEASE.jar
2)在springmvc配置文件中加入如下代码
<!-- 1.包扫描:扫描含注解的controller类所在的包 --> <context:component-scan base-package="com.zhiyou100.cyf.annotation"></context:component-scan> <!-- 2.开启注解驱动AnnotationHandlerMapping --> <mvc:annotation-driven/>
3)创建controller类
@Controller //等价于<bean class="com.zhiyou100.cyf.annotation"> public class MyController { @RequestMapping("/list.do")//表示访问地址 public String list() { System.out.println("列表查询"); return "login"; } @RequestMapping("insert.do") public String insert() { System.out.println("新增数据"); return "login"; } }
四、通过springmvc来接收参数
@RequestMapping("list") public ModelAndView list(String username,String pw) { ModelAndView mv=new ModelAndView("main"); mv.addObject("username", username); mv.addObject("pw", pw); return mv; } @RequestMapping("index") public ModelAndView select(User user) { ModelAndView mv=new ModelAndView("main");// mv.addObject("user",user); return mv; }
接受参数时出现乱码。使用过滤器。(自定义的过滤器 也可以使用springmvc提供的过滤器)
五、安装dashboard
在help->Eclipse Marketplace->搜索下载Spring Tools 3
安装选项可以全选,安装完成后spring项目中会自动添加内容辅助,web.xml中servlet的配置和spring配置文件的创建均可一键生成