springMVC日记(一)

一、SSM框架结构图

springMVC日记(一)

springMVC就是controller层的框架,它封装了接收参数,封装到实体,和页面跳转的方法。极大地简化了代码量,也便于查阅和修改配置

二、springmvc流程图

springMVC日记(一)

跟着流程来写一个springmvc的demo

  1.引入相关jar包 

springMVC日记(一)

  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>

具体流程:

  1. 客户发出请求。http://localhost:8080/springmvc-01/my.do
  2. 到达web.xml文件中 DispatcherServlet.查看是否符合url的要求
  3. DispatcherServlet就会查询springmvc的配置文件。找HandlerMapping,其根据bean的name查找相应的Controller
  4. 找到我的MyController类。执行该类中handleRequestInternal方法。
  5. 根据返回的modelAndView在找springmvc配置文件中视图解析器,把viewName和prefix以及suffix做了一个拼接。把拼接的页面展示给客户。

三、常见的HandlerMapping

  1.BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类。默认的mapping

  2. SimpleUrlHandlerMapping 根据beanid查找对应的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 ></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配置文件的创建均可一键生成