zoukankan      html  css  js  c++  java
  • 整合ssm三大框架使用注解开发查询用户信息

    整合ssm三大框架使用注解开发查询用户信息

    一、基础知识准备之spring mvc工作原理

     

     

    二、分析

    第一步:发起请求到前端控制器(DispatcherServlet)

    第二步:前端控制器请求HandlerMapping查找 Handler

    可以根据xml配置、注解进行查找

    第三步:处理器映射器HandlerMapping向前端控制器返回Handler

    第四步:前端控制器调用处理器适配器去执行Handler

    第五步:处理器适配器去执行Handler

    第六步:Handler执行完成给适配器返回ModelAndView

    第七步:处理器适配器向前端控制器返回ModelAndView

    ModelAndViewspringmvc框架的一个底层对象,包括 Modelview

    第八步:前端控制器请求视图解析器去进行视图解析

    根据逻辑视图名解析成真正的视图(jsp)

    第九步:视图解析器向前端控制器返回View

    第十步:前端控制器进行视图渲染

    视图渲染将模型数据(ModelAndView对象中)填充到request

    第十一步:前端控制器向用户响应结果

    组件:

    1、前端控制器DispatcherServlet(不需要程序员开发)

    作用接收请求,响应结果,相当于转发器,中央处理器。

    有了DispatcherServlet减少了其它组件之间的耦合度。

    2、处理器映射器HandlerMapping(不需要程序员开发)

    作用:根据请求的url查找Handler

    3、处理器适配器HandlerAdapter

    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

    4、处理器Handler(需要程序员开发)

    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

    5、视图解析器View resolver(不需要程序员开发)

    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view

    6、视图View(需要程序员开发jsp)

    View是一个接口,实现类支持不同的View类型(jspfreemarkerpdf...

    三、程序

    1、需求

    用户列表信息查询

     

    2、环境准备

     

    数据库环境:mysql-5.5.28-winx64

     

    java环境:

    jdk1.8

    Intellij IDEA

    springmvc版本:spring4.3.3

    需要spring4.3.3所有jar(一定包括spring-webmvc-4.3.3.RELEASE.jar)

    需要mybatis jar包,以及spring mybatis 整合包

    需要数据库连接池jardruid-1.0.18.jar等其他数据格式处理包,如图

    access-bridge-64.jar

    aopalliance-1.0.jar

    commons-logging-1.2.jar

    druid-1.0.18.jar

    jackson-annotations-2.5.0.jar

    jackson-core-2.5.0.jar

    jackson-databind-2.5.0.jar

    joda-time-2.1.jar

    mybatis-3.2.2.jar

    mybatis-spring-1.1.1.jar

    mysql-connector-java-5.1.20-bin.jar

    spring-aop-4.3.3.RELEASE.jar

    spring-aspects-4.3.3.RELEASE.jar

    spring-beans-4.3.3.RELEASE.jar

    spring-context-4.3.3.RELEASE.jar

    spring-context-support-4.3.3.RELEASE.jar

    spring-core-4.3.3.RELEASE.jar

    spring-expression-4.3.3.RELEASE.jar

    spring-instrument-4.3.3.RELEASE.jar

    spring-instrument-tomcat-4.3.3.RELEASE.jar

    spring-jdbc-4.3.3.RELEASE.jar

    spring-jms-4.3.3.RELEASE.jar

    spring-messaging-4.3.3.RELEASE.jar

    spring-orm-4.3.3.RELEASE.jar

    spring-oxm-4.3.3.RELEASE.jar

    spring-test-4.3.3.RELEASE.jar

    spring-tx-4.3.3.RELEASE.jar

    spring-web-4.3.3.RELEASE.jar

    spring-webmvc-4.3.3.RELEASE.jar

    spring-webmvc-portlet-4.3.3.RELEASE.jar

    spring-websocket-4.3.3.RELEASE.jar

    3、配置前端控制器

    web.xml中配置前端控制器。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!--DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,拦截匹配的请求,
        Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。-->
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.form</url-pattern>
        </servlet-mapping>
    </web-app>

    4、主要配置文件

    配置注解映射器和适配器

    以及spring容器中加载Handler即为controller

    以及配置:

    数据源

    SqlSessionFactory

    mapper扫描器

    <?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="com.controller"/><!--如果直接采用SpringMVC,只需要把所有相关配置放到xxx-servlet.xml,xxx由web.xml文件中的servlet的name决定-->
        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean id="mappingJacksonHttpMessageConverter"
                      class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
        <!--<context:component-scan/>标签是告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件。
        而<mvc:annotation-scan/>是告知Spring,我们启用注解驱动。然后Spring会自动为我们注册上面说到的几个Bean到工厂中,来处理我们的请求。-->
        <mvc:default-servlet-handler/>
        <!-- 让Spring框架能够捕获所有URL的请求(先调整web.xml中的DispatcherServlet的配置,使其可以捕获所有的请求:),
        同时又将静态资源的请求转由Web容器处理(此句注释意义),-->
        <bean id="dataSource"
              class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"></property>
            <property name="username" value="root"></property>
            <property name="password" value="123456"></property>
        </bean><!--加druid-1.0.18jar包-->
        <!-- bim基本库Session工厂Bean -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="mapperLocations">
                <list>
                    <value>classpath:com/mapper/*.xml</value><!--如果数据库映射文件建立时选择file类型,例如名字为StudentMapper.xml,而不是直接建立xml文件,若是则会出现*.xml变红的现象-->
                </list>
            </property>
        </bean>
        <!-- 自动扫描mapping.xml文件  com.mapper.mapping-->
        <!-- 当mybatis的xml文件和mapper接口不在相同包下时,需要用mapperLocations属性指定xml文件的路径。
         *是个通配符,代表所有的文件,**代表所有目录下 -->

        <!--  通过扫描的模式,扫描目录在com/dao目录下,所有的mapper都继承SqlMapper接口的接口, 这样一个bean就可以了    -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.dao"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        </bean>
    </beans>

     

     

    5:业务代码

    ControllerHandler

    package com.controller;

    import com.dao.StudentMapper;
    import com.domain.Student;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;

    import java.util.List;

    /**
     * Created by 谭雪娇 on 2017/4/16.
     *
     */
    /*
    *
    * 无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller */

    /*可以使用@RequestMapping 来映射URL 到控制器类,或者是到Controller 控制器的处理方法上*/
    @Controller        //控制器Controller 负责处理由DispatcherServlet 分发的请求
    @RequestMapping("/Student")
    public class StudentController {
        @Autowired(required=false)
        StudentMapper mapper;
        @RequestMapping(value="/hello",method= RequestMethod.GET)//method 属性主要是用于限制能够访问的方法类型的。
        @ResponseBody
        public Object get(){
            List<Student> lst=mapper.get();
            return lst;
           public Object delete(@PathVariable long id){
            return mapper.deleteById(id);
        }

    }

    }

     

    dao(接口)

    package com.dao;

    import com.domain.Student;

    import java.util.List;

    /**
     * Created by 谭雪娇 on 2017/4/16.
     */
    public interface StudentMapper {
        List<Student> get();
       
    }

     

    domain(实体类)

    package com.domain;

    /**
     * Created by 谭雪娇 on 2017/4/16.
     */
    public class Student {
        private String id;
        private String name;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

     

    mapper(映射文件)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.dao.StudentMapper">
        <resultMap id="BaseResultMap" type="com.domain.Student">
            <id column="id" property="id" jdbcType="BIGINT"/>
            <result column="name" property="name" jdbcType="VARCHAR"></result>
        </resultMap>
        <sql id="Base_Column_List">
            id,name
        </sql>
        <select id="get" resultMap="BaseResultMap">
            select
            <include refid="Base_Column_List"/>
            from stu
        </select>
    </mapper>

     

     

    查询结果

     

     

     

  • 相关阅读:
    .htaccess注释
    Ubuntu开机自启动jar包和Nginx
    Rook部署和管理Ceph集群
    Python 打包 Nuitka
    Python 反射 备查
    Python 屏幕坐标点取色
    Python pynput 监听事件
    【线性代数】基本概念
    C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
    Asp.Net Core Swagger 接口分组(支持接口一对多暴露)
  • 原文地址:https://www.cnblogs.com/sinceForever/p/8454422.html
Copyright © 2011-2022 走看看