• SpringMVC:SSM整合(动力)


     

    pom.xml:引入依赖:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0</modelVersion>
    5. <groupId>com.bjpowernode</groupId>
    6. <artifactId>ch07-ssm</artifactId>
    7. <version>1.0-SNAPSHOT</version>
    8. <packaging>war</packaging>
    9. <properties>
    10. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    11. <maven.compiler.source>1.8</maven.compiler.source>
    12. <maven.compiler.target>1.8</maven.compiler.target>
    13. </properties>
    14. <dependencies>
    15. <dependency>
    16. <groupId>junit</groupId>
    17. <artifactId>junit</artifactId>
    18. <version>4.11</version>
    19. <scope>test</scope>
    20. </dependency>
    21. <!--Servlet依赖-->
    22. <dependency>
    23. <groupId>javax.servlet</groupId>
    24. <artifactId>javax.servlet-api</artifactId>
    25. <version>3.1.0</version>
    26. <scope>provided</scope>
    27. </dependency>
    28. <!--jsp依赖-->
    29. <dependency>
    30. <groupId>javax.servlet.jsp</groupId>
    31. <artifactId>jsp-api</artifactId>
    32. <version>2.2.1-b03</version>
    33. <scope>provided</scope>
    34. </dependency>
    35. <!--springmvc依赖-->
    36. <dependency>
    37. <groupId>org.springframework</groupId>
    38. <artifactId>spring-webmvc</artifactId>
    39. <version>5.2.5.RELEASE</version>
    40. </dependency>
    41. <!--事务依赖-->
    42. <dependency>
    43. <groupId>org.springframework</groupId>
    44. <artifactId>spring-tx</artifactId>
    45. <version>5.2.5.RELEASE</version>
    46. </dependency>
    47. <!--jdbc-->
    48. <dependency>
    49. <groupId>org.springframework</groupId>
    50. <artifactId>spring-jdbc</artifactId>
    51. <version>5.2.5.RELEASE</version>
    52. </dependency>
    53. <!--jackon依赖-->
    54. <dependency>
    55. <groupId>com.fasterxml.jackson.core</groupId>
    56. <artifactId>jackson-databind</artifactId>
    57. <version>2.9.0</version>
    58. </dependency>
    59. <!--mybatis依赖-->
    60. <dependency>
    61. <groupId>org.mybatis</groupId>
    62. <artifactId>mybatis</artifactId>
    63. <version>3.5.1</version>
    64. </dependency>
    65. <!--mybatis与spring整合-->
    66. <dependency>
    67. <groupId>org.mybatis</groupId>
    68. <artifactId>mybatis-spring</artifactId>
    69. <version>1.3.1</version>
    70. </dependency>
    71. <!--mysql依赖-->
    72. <dependency>
    73. <groupId>mysql</groupId>
    74. <artifactId>mysql-connector-java</artifactId>
    75. <version>5.1.9</version>
    76. </dependency>
    77. <!--阿里巴巴连接池依赖-->
    78. <dependency>
    79. <groupId>com.alibaba</groupId>
    80. <artifactId>druid</artifactId>
    81. <version>1.1.12</version>
    82. </dependency>
    83. </dependencies>
    84. <build>
    85. <resources>
    86. <resource>
    87. <directory>src/main/java</directory><!--所在的目录-->
    88. <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
    89. <include>**/*.properties</include>
    90. <include>**/*.xml</include>
    91. </includes>
    92. <filtering>false</filtering>
    93. </resource>
    94. </resources>
    95. <plugins>
    96. <plugin>
    97. <artifactId>maven-compiler-plugin</artifactId>
    98. <version>3.1</version>
    99. <configuration>
    100. <source>1.8</source>
    101. <target>1.8</target>
    102. </configuration>
    103. </plugin>
    104. </plugins>
    105. </build>
    106. </project>

    web.xml:初始化配置:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0">
    6. <!-- 声明,注册springmvc的核心对象DispatcherServlet-->
    7. <servlet>
    8. <servlet-name>myweb</servlet-name>
    9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    10. <!-- 自定义springmvc读取的配置文件的位置-->
    11. <init-param>
    12. <!--springmvc的配置文件属性-->
    13. <param-name>contextConfigLocation</param-name>
    14. <!-- 指定自定义文件的位置-->
    15. <param-value>classpath:conf/dispatcherServlet.xml</param-value>
    16. </init-param>
    17. <!-- 在tomcat启动后,创建Servlet对象
    18. load-on-startup:表示tomcat启动后创建对象的顺序,它的值是正数,数值越小 tomacat创建对象越早
    19. -->
    20. <load-on-startup>1</load-on-startup>
    21. </servlet>
    22. <!-- 所有的*..do请求交给myweb中央处理器处理-->
    23. <servlet-mapping>
    24. <servlet-name>myweb</servlet-name>
    25. <url-pattern>*.do</url-pattern>
    26. </servlet-mapping>
    27. <!--注册spring的监听器-->
    28. <context-param>
    29. <param-name>contextConfigLocation</param-name>
    30. <param-value>classpath:conf/applicationContext.xml</param-value>
    31. </context-param>
    32. <listener>
    33. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    34. </listener>
    35. <!--注册声明过滤器,解决post请求乱码问题-->
    36. <filter>
    37. <filter-name>characterEncodingFilter</filter-name>
    38. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    39. <!--设置项目中使用的编码-->
    40. <init-param>
    41. <param-name>encoding</param-name>
    42. <param-value>utf-8</param-value>
    43. </init-param>
    44. <!--强制请求对象(HttpServletRequest)使用encoding编码的值-->
    45. <init-param>
    46. <param-name>forceRequestEncoding</param-name>
    47. <param-value>true</param-value>
    48. </init-param>
    49. <!--强制应答对象(HttpServletResponse)使用encoding编码的值-->
    50. <init-param>
    51. <param-name>forceReponsetEncoding</param-name>
    52. <param-value>true</param-value>
    53. </init-param>
    54. </filter>
    55. <filter-mapping>
    56. <filter-name>characterEncodingFilter</filter-name>
    57. <!--
    58. /*:表示强制所有的请求先通过过滤器处理
    59. -->
    60. <url-pattern>/*</url-pattern>
    61. </filter-mapping>
    62. </web-app>

    springmvc配置文件:dispatcherServlet:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:mvc="http://www.springframework.org/schema/mvc"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    7. <!--springmvc配置文件,声明controller和其他web相关的对象-->
    8. <!--注解扫描器:包扫描-->
    9. <context:component-scan base-package="com.bjpowernode.controller"/>
    10. <!-- 声明springmvc框架中的视图解析器,帮助开发人员设置视图文件的路径-->
    11. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    12. <!-- 前缀:视图文件的路径-->
    13. <property name="prefix" value="/WEB-INF/jsp/"/>
    14. <!-- 后缀:视图文件的扩展名-->
    15. <property name="suffix" value=".jsp"/>
    16. </bean>
    17. <!--注解驱动
    18. 1.响应ajax请求,返回json
    19. 2.解决静态资源访问问题
    20. -->
    21. <mvc:annotation-driven/>
    22. </beans>

    jdbc.properties:

    1. jdbc.url=jdbc:mysql://localhost:3306/springdb
    2. jdbc.username=root
    3. jdbc.password=123456

    spring配置文件:applicationContext.xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    6. <!--spring的配置文件:声明Service dao 工具类等对象-->
    7. <!-- 声明数据库连接文件的位置-->
    8. <context:property-placeholder location="classpath:conf/jdbc.properties"/>
    9. <!-- 声明数据源,连接数据库-->
    10. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
    11. init-method="init" destroy-method="close">
    12. <property name="url" value="${jdbc.url}"/>
    13. <property name="username" value="${jdbc.username}"/>
    14. <property name="password" value="${jdbc.password}"/>
    15. </bean>
    16. <!-- 声明SqlSessionFactoryBean创建SqlSessionFactory-->
    17. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    18. <property name="dataSource" ref="dataSource"/>
    19. <property name="configLocation" value="classpath:conf/mybatis.xml"/>
    20. </bean>
    21. <!-- 声明mybatis的扫描器,创建dao对象-->
    22. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    23. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    24. <property name="basePackage" value="com.bjpowernode.dao"/>
    25. </bean>
    26. <!-- 声明service的注解@Service所在包名的位置-->
    27. <context:component-scan base-package="com.bjpowernode.service"/>
    28. <!--事物的配置:注解的配置,aspectj的配置,这里没配置-->
    29. </beans>

    mybatis主配置文件:mybatis.xml:

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <!--设置日志-->
    7. <!--<settings>
    8. <setting name="logImpl" value="STDOUT_LOGGING"/>
    9. </settings>-->
    10. <!-- 设置别名-->
    11. <typeAliases>
    12. <!--name:实体类所在的包名(不是实体类的包名也可以)-->
    13. <package name="com.bjpowernode.domain"/>
    14. </typeAliases>
    15. <!--sql mapper(映射文件)的位置-->
    16. <mappers>
    17. <!-- name:是包名,这个包中的所有mapper.xml一次都能够加载
    18. 使用package的要求:
    19. 1.mapper文件名和dao接口名必须完全一样,包括大小写
    20. 2.mapping文件和dao接口必须在同一目录
    21. -->
    22. <package name="com.bjpowernode.dao"/>
    23. </mappers>
    24. </configuration>

    Student:

    1. package com.bjpowernode.domain;
    2. public class Student {
    3. private Integer id;
    4. private String name;
    5. private Integer age;
    6. public Integer getId() {
    7. return id;
    8. }
    9. public void setId(Integer id) {
    10. this.id = id;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public void setName(String name) {
    16. this.name = name;
    17. }
    18. public Integer getAge() {
    19. return age;
    20. }
    21. public void setAge(Integer age) {
    22. this.age = age;
    23. }
    24. @Override
    25. public String toString() {
    26. return "Student{" +
    27. "id=" + id +
    28. ", name='" + name + '\'' +
    29. ", age=" + age +
    30. '}';
    31. }
    32. }

    StudentDao:

    1. package com.bjpowernode.dao;
    2. import com.bjpowernode.domain.Student;
    3. import java.util.List;
    4. public interface StudentDao {
    5. //插入方法
    6. int insertStudent(Student student);
    7. //查询方法
    8. List<Student> selectStudents();
    9. }

     Mapper文件:StudentDao.xml:

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.bjpowernode.dao.StudentDao">
    6. <!--使用insert,update,delete,select标签来写sql语句-->
    7. <select id="selectStudents" resultType="com.bjpowernode.domain.Student">
    8. select id,name,age from student order by id desc
    9. </select>
    10. <insert id="insertStudent">
    11. insert into student(name,age) values(#{name},#{age})
    12. </insert>
    13. </mapper>

     StudentService:

    1. package com.bjpowernode.service;
    2. import com.bjpowernode.domain.Student;
    3. import java.util.List;
    4. public interface StudentService {
    5. int addStudent(Student student);
    6. List<Student> queryStudents();
    7. }

    StudentServiceImpl:

    1. package com.bjpowernode.service;
    2. import com.bjpowernode.dao.StudentDao;
    3. import com.bjpowernode.domain.Student;
    4. import org.springframework.stereotype.Service;
    5. import javax.annotation.Resource;
    6. import java.util.List;
    7. @Service
    8. public class StudentServiceImpl implements StudentService {
    9. //引用类型的自动注入,@Autowired,@Resource
    10. @Resource
    11. private StudentDao studentDao;
    12. @Override
    13. public int addStudent(Student student) {
    14. int nums = studentDao.insertStudent(student);
    15. return nums;
    16. }
    17. @Override
    18. public List<Student> queryStudents() {
    19. List<Student> students = studentDao.selectStudents();
    20. return students;
    21. }
    22. }

    StudentController:

    1. package com.bjpowernode.controller;
    2. import com.bjpowernode.domain.Student;
    3. import com.bjpowernode.service.StudentService;
    4. import org.springframework.stereotype.Controller;
    5. import org.springframework.web.bind.annotation.RequestMapping;
    6. import org.springframework.web.bind.annotation.ResponseBody;
    7. import org.springframework.web.servlet.ModelAndView;
    8. import javax.annotation.Resource;
    9. import java.util.List;
    10. @Controller
    11. @RequestMapping(value = "/student")
    12. public class StudentController {
    13. @Resource
    14. private StudentService service;
    15. @RequestMapping(value = "/addStudent.do")
    16. public ModelAndView addStudent(Student student){
    17. //调用service处理student
    18. ModelAndView mv=new ModelAndView();
    19. String tips="注册失败";
    20. //调用service处理student
    21. int nums = service.addStudent(student);
    22. if (nums>0){
    23. //注册成功
    24. tips="学生【"+student.getName()+"】注册成功!";
    25. }
    26. //添加数据
    27. mv.addObject("tips",tips);
    28. //指定结果页面
    29. mv.setViewName("result");
    30. return mv;
    31. }
    32. //处理学生的查询,响应ajax
    33. @RequestMapping(value = "/queryStudent.do")
    34. @ResponseBody
    35. public List<Student> queryStudent(){
    36. //参数检查,简单的数据处理
    37. List<Student> students = service.queryStudents();
    38. return students;
    39. }
    40. }

    index.jsp:

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: DELL
    4. Date: 2022/6/23
    5. Time: 22:09
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <%
    10. String path = request.getContextPath();
    11. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    12. %>
    13. <html>
    14. <head>
    15. <title>Title</title>
    16. <base href="<%=basePath%>">
    17. </head>
    18. <body>
    19. <div align="center">
    20. <p>SSM整合的例子</p>
    21. <img src="images/b.jpg">
    22. <table>
    23. <tr>
    24. <td><a href="addStudent.jsp">注册学生</a></td>
    25. </tr>
    26. <tr>
    27. <td><a href="listStudent.jsp">浏览学生</a></td>
    28. </tr>
    29. </table>
    30. </div>
    31. </body>
    32. </html>

    addStudent.jsp:

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: DELL
    4. Date: 2022/6/23
    5. Time: 21:31
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <%
    10. String path = request.getContextPath();
    11. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    12. %>
    13. <html>
    14. <head>
    15. <title>注册学生</title>
    16. <base href="<%=basePath%>"/>
    17. </head>
    18. <body>
    19. <div align="center">
    20. <form action="student/addStudent.do" method="post">
    21. <table>
    22. <tr>
    23. <td>姓名:</td>
    24. <td><input type="text" name="name"></td>
    25. </tr>
    26. <tr>
    27. <td>年龄:</td>
    28. <td><input type="text" name="age"></td>
    29. </tr>
    30. <tr>
    31. <td>
    32. <input type="submit" value="注册">
    33. </td>
    34. </tr>
    35. </table>
    36. </form>
    37. </div>
    38. </body>
    39. </html>

    listStudent.jsp:

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: DELL
    4. Date: 2022/6/23
    5. Time: 22:35
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <%
    10. String path = request.getContextPath();
    11. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    12. %>
    13. <html>
    14. <head>
    15. <title>查询学生ajax</title>
    16. <base href="<%=basePath%>"/>
    17. <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
    18. <script type="text/javascript">
    19. $(function () {
    20. //在当前页面dom对象加载后,执行loadStudentData()
    21. loadStudentData();
    22. //点击按钮
    23. $("#btnLoader").click(function () {
    24. loadStudentData();//调用函数
    25. })
    26. //定义函数
    27. function loadStudentData() {
    28. $.ajax({
    29. url:"student/queryStudent.do",
    30. type:"post",
    31. dataType:"json",
    32. success:function (data) {
    33. //清除旧的数据
    34. $("#info").html("");
    35. //增加新的数据
    36. $.each(data,function (i,n) {
    37. $("#info").append("<tr>")
    38. .append("<td>"+n.id+"</td>")
    39. .append("<td>"+n.name+"</td>")
    40. .append("<td>"+n.age+"</td>")
    41. .append("</tr>")
    42. })
    43. }
    44. })
    45. }
    46. })
    47. </script>
    48. </head>
    49. <body>
    50. <div align="center">
    51. <table>
    52. <thead>
    53. <tr>
    54. <td>学号</td>
    55. <td>姓名</td>
    56. <td>年龄</td>
    57. </tr>
    58. </thead>
    59. <tbody id="info">
    60. </tbody>
    61. <input type="button" id="btnLoader"value="查询数据">
    62. </table>
    63. </div>
    64. </body>
    65. </html>

    点击注册学生:

    点击浏览学生:

     

  • 相关阅读:
    Jmeter接口测试简易步骤
    Ribbon负载均衡
    教育管理系统功能点
    linux易忘命令(如:端口、进程、文件、内存、vim)持续更新
    setsockopt()函数的用法
    CNN RNN DNN transformer 区别以及音频信号处理适合方式
    gitlab+jenkins+k8s实现持续集成springboot+springcloud
    三子棋小游戏(简单详细)
    pgsql在navicate导出sql再去其他库导入时会遇到的小问题
    strcmp函数详解:字符串比较的利器
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/125433049