• Java -- SpringMVC学习笔记6、SSM整合开发


    1、SSM整合开发

    SSM 编程,即SpringMVC+Spring+MyBatis整合。就是将MyBatis整合入Spring。因为SpringMVC原本就是Spring的一部分,不用专门整合。

    2、搭建SSM开发环境

    1、添加依赖和插件:

    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <!--servlet-->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
        <!-- jsp 依赖 -->
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.2.1-b03</version>
          <scope>provided</scope>
        </dependency>
        <!--springmvc-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.2.5.RELEASE</version>
        </dependency>
        <!-- 事务的-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>5.2.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.2.5.RELEASE</version>
        </dependency>
        <!--aspectj 依赖-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aspects</artifactId>
          <version>5.2.5.RELEASE</version>
        </dependency>
        <!--jackson-->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.9.0</version>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.0</version>
        </dependency>
        <!--mybatis 和 和 spring 整合的-->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.1</version>
        </dependency>
        <!--mybatis-->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.1</version>
        </dependency>
        <!--mysql 驱动-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.9</version>
        </dependency>
        <!--druid-->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.12</version>
        </dependency>
    </dependencies>
    
    <build>
        <resources>
            <resource>
            <directory>src/main/java</directory><!-- 所在的目录-->
            <includes><!-- 包括目录下的.properties,.xml 文件都会扫描到-->
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
            </resource>
        </resources>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
    </build>
    

    2、配置web.xml:

    <!--注册字符过滤器-->
        <filter>
            <filter-name>characterEncodingFilter</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>
                <param-name>forceRequestEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
            <init-param>
                <param-name>forceResponseEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!--注册监听器-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        
        <!--中央调度器-->
        <servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:dispatcherServlet.xml</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    

    3、创建实体类:

    public class Student
    {
        private int id;
        private String name;
        private int age;
        private String address;
        private String school;
        //getter setter toString...
    }
    

    4、Jdbc属性配置文件jdbc.properties

    jdbc.driver = com.mysql.jdbc.Driver
    jdbc.url = jdbc:mysql://localhost:8080/StudentManage?characterEncoding=utf-8&useSSL=false
    jdbc.username=root
    jdbc.password=root
    

    5、Spring配置文件applicationContext.xml

    <context:component-scan base-package="com.rg.service"/>
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--数据源-->
    <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--创建SqlSessionFactory对象-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis.xml"/>
        <property name="dataSource" ref="myDataSource"/>
    </bean>
    
    <!--创建动态代理-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.rg.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    

    6、Springmvc配置文件

    <!--声明扫描器-->
    <context:component-scan base-package="com.rg.controllers"/>
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--声明注解驱动-->
    <mvc:annotation-driven/>
    

    7、mybatis.xml

    <configuration>
        <settings>
            <!--设置mybatis输出日志-->
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        </settings>
        <typeAliases>
            <package name="com.rg.entity"/>
        </typeAliases>
        <!--SQL映射文件的位置-->
        <mappers>
            <package name="com.rg.dao"/>
        </mappers>
    </configuration>
    

    8、Dao接口

    public interface StudentDao
    {
        int insertStudent(Student student);
    
        int updateStudent(Student student);
    
        int deleteStudent(int id);
    
        Student selectStudent(int id);
    
        List<Student> selectStudentAll();
    }
    

    9、sql映射文件

    <mapper namespace="com.rg.dao.StudentDao">
        <select id="selectStudent" resultType="Student" parameterType="int">
            select id,name,age,address,school from Student where id = #{id}
        </select>
        <select id="selectStudentAll" resultType="Student">
            select id,name,age,address,school from Student
        </select>
    
        <insert id="insertStudent" parameterType="Student">
            insert into Student(name,age,address,school) values(#{name},#{age},#{address},#{school})
        </insert>
        <update id="updateStudent" parameterType="Student">
            update Student set name = #{name},age = #{age},address=#{address},school=#{school} where id=#{id}
        </update>
        <delete id="deleteStudent" parameterType="int">
            delete from Student where id=#{id}
        </delete>
    </mapper>
    

    10、Service接口

    public interface StudentService
    {
        int addStu(Student student);
    
        int modifyStu(Student student);
    
        int removeStu(int id);
    
        Student findStuById(int id);
    
        List<Student> findStuAll();
    }
    

    11、Service接口实现类

    @Service
    public class StudentServiceImpl implements StudentService
    {
        @Resource
        private StudentDao studentDao;
    
        @Override
        public int addStu(Student student)
        {
            return studentDao.insertStudent(student);
        }
    
        @Override
        public int modifyStu(Student student)
        {
            return studentDao.updateStudent(student);
        }
    
        @Override
        public int removeStu(int id)
        {
            return studentDao.deleteStudent(id);
        }
    
        @Override
        public Student findStuById(int id)
        {
            return studentDao.selectStudent(id);
        }
    
        @Override
        public List<Student> findStuAll()
        {
            return studentDao.selectStudentAll();
        }
    }
    

    12、处理器定义

    @Controller
    public class StudentController
    {
        @Resource
        private StudentService studentService;
    
        @RequestMapping(value = "/selectStudents.do", method = RequestMethod.POST)
        @ResponseBody
        public List<Student> initStudentList()
        {
            List<Student> students = studentService.findStuAll();
    
            return students;
        }
    
        @RequestMapping(value = "/addStu.do", method = RequestMethod.POST)
        public ModelAndView addStu(Student student)
        {
            int result = studentService.addStu(student);
            ModelAndView mv = new ModelAndView();
    
            if (result > 0)
            {
                mv.setViewName("redirect:index.jsp");
            }
            return mv;
        }
    }
    

    13、定义视图-首页文件 --- index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%
        String basePath = request.getScheme() + "://" +
                request.getServerName() + ":" + request.getServerPort() +
                request.getContextPath() + "/";
    %>
    <html>
    <head>
        <base href="<%=basePath%>">
        <title>Title</title>
        <script src="js/jquery-3.4.1.min.js"></script>
        <script>
            $(document).ready(function () {
                $.ajax({
                    url: "selectStudents.do",
                    type: "post",
                    dataType: "json",
                    success: function (data) {
                        $("#stuList").html("");
                        $.each(data, function (i, n) {
                            $("#stuList").append("<tr>")
                                .append("<td>" + n.name + "</td>")
                                .append("<td>" + n.age + "</td>")
                                .append("<td>" + n.address + "</td>")
                                .append("<td>" + n.school + "</td>")
                                .append("</tr>")
                        })
                    }
                })
            })
        </script>
    </head>
    <body>
    <table>
        <thead>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>地址</th>
            <th>学校</th>
        </tr>
        </thead>
        <tbody id="stuList">
    
        </tbody>
    </table>
    </body>
    </html>
    

    14、添加页面

    <form method="post" action="addStu.do">
        UserName:<input type="text" name="name">
        Age:<input type="text" name="age">
        AddRess:<input type="text" name="address">
        School:<input type="text" name="school">
        <input type="submit" value="提交">
    </form>
    

    最后、base标签是否需要用根据情况。

  • 相关阅读:
    iOS 中的类属性
    Ubuntu18.04 设置开机进入命令行模式
    ReactNative——如何隐藏状态栏(实现沉浸式)
    React Native(简单精致的底部导航栏):使用react-native-tab-navigator实现底部导航栏
    windows scp 报错 no such file or dictionary
    JS中Logger的使用
    react CSSTransition 参数
    Javaweb中的定时器
    windows配置java环境变量,修改java版本后不生效
    Eclipse中import javax.servlet.*出错
  • 原文地址:https://www.cnblogs.com/dcy521/p/14800063.html
Copyright © 2020-2023  润新知