• 以JSP为视图解析器搭建SSM项目


    目录

    一 环境准备

    1.文件目录(web服务都建不成的直接劝退吧)

     2.tomcat8.5

    3.maven依赖

    二.配置文件

    1.web.xml

     2.springmvc.xml

    3.spring-mybatis.xml

    4.mybatis.xml

    5.jdbc.properties

    6.log4j.xml

    三.测试

    1.UserController.java

    2.index.jsp

    3.结果

     4.查用户结果也能出来​编辑

     四.一些错误

    1.注意这个注意这个注意这个!!!(如果缺少清除再重新打包)

     2.之前没乱配置报的错


    一 环境准备

    1.文件目录(web服务都建不成的直接劝退吧)

     2.tomcat8.5

     

     注:选下面图片这个是为了实现上面的热部署

    3.maven依赖

     注:有个分页插件依赖,如果用到可以写,用不到就不写

    为什么导入日志,因为mybatis里面需要实现日志功能logback是sl4j的实现

    1. <packaging>warpackaging>
    2. <dependencies>
    3. <dependency>
    4. <groupId>com.fasterxml.jackson.coregroupId>
    5. <artifactId>jackson-databindartifactId>
    6. <version>2.12.1version>
    7. dependency>
    8. <dependency>
    9. <groupId>junitgroupId>
    10. <artifactId>junitartifactId>
    11. <version>4.12version>
    12. dependency>
    13. <dependency>
    14. <groupId>mysqlgroupId>
    15. <artifactId>mysql-connector-javaartifactId>
    16. <version>8.0.21version>
    17. dependency>
    18. <dependency>
    19. <groupId>com.alibabagroupId>
    20. <artifactId>druidartifactId>
    21. <version>1.0.29version>
    22. dependency>
    23. <dependency>
    24. <groupId>com.github.pagehelpergroupId>
    25. <artifactId>pagehelperartifactId>
    26. <version>5.1.2version>
    27. dependency>
    28. <dependency>
    29. <groupId>org.mybatisgroupId>
    30. <artifactId>mybatisartifactId>
    31. <version>3.5.2version>
    32. dependency>
    33. <dependency>
    34. <groupId>org.mybatisgroupId>
    35. <artifactId>mybatis-springartifactId>
    36. <version>2.0.2version>
    37. dependency>
    38. <dependency>
    39. <groupId>org.springframeworkgroupId>
    40. <artifactId>spring-webmvcartifactId>
    41. <version>5.3.1version>
    42. dependency>
    43. <dependency>
    44. <groupId>org.springframeworkgroupId>
    45. <artifactId>spring-jdbcartifactId>
    46. <version>5.3.1version>
    47. dependency>
    48. <dependency>
    49. <groupId>ch.qos.logbackgroupId>
    50. <artifactId>logback-classicartifactId>
    51. <version>1.2.3version>
    52. dependency>
    53. <dependency>
    54. <groupId>javax.servletgroupId>
    55. <artifactId>javax.servlet-apiartifactId>
    56. <version>3.1.0version>
    57. <scope>providedscope>
    58. dependency>
    59. <dependency>
    60. <groupId>javax.servletgroupId>
    61. <artifactId>jsp-apiartifactId>
    62. <version>2.0version>
    63. <scope>providedscope>
    64. dependency>
    65. <dependency>
    66. <groupId>commons-fileuploadgroupId>
    67. <artifactId>commons-fileuploadartifactId>
    68. <version>1.3.1version>
    69. dependency>
    70. <dependency>
    71. <groupId>javax.servletgroupId>
    72. <artifactId>jstlartifactId>
    73. <version>1.2version>
    74. <scope>runtimescope>
    75. dependency>
    76. dependencies>

    二.配置文件

    1.web.xml

    注:编码过滤器和前端控制器必须有,剩下的只是实现部分功能方便。

    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    4. version="4.0">
    5. <filter>
    6. <filter-name>CharacterEncodingFilterfilter-name>
    7. <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    8. <init-param>
    9. <param-name>encodingparam-name>
    10. <param-value>UTF-8param-value>
    11. init-param>
    12. <init-param>
    13. <param-name>forceEncodingparam-name>
    14. <param-value>trueparam-value>
    15. init-param>
    16. filter>
    17. <filter-mapping>
    18. <filter-name>CharacterEncodingFilterfilter-name>
    19. <url-pattern>/*url-pattern>
    20. filter-mapping>
    21. <filter>
    22. <filter-name>HiddenHttpMethodFilterfilter-name>
    23. <filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
    24. filter>
    25. <filter-mapping>
    26. <filter-name>HiddenHttpMethodFilterfilter-name>
    27. <url-pattern>/*url-pattern>
    28. filter-mapping>
    29. <servlet>
    30. <servlet-name>SpringMVCservlet-name>
    31. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    32. <init-param>
    33. <param-name>contextConfigLocationparam-name>
    34. <param-value>classpath:springmvc.xmlparam-value>
    35. init-param>
    36. <load-on-startup>1load-on-startup>
    37. servlet>
    38. <servlet-mapping>
    39. <servlet-name>SpringMVCservlet-name>
    40. <url-pattern>/url-pattern>
    41. servlet-mapping>
    42. <listener>
    43. <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    44. listener>
    45. <context-param>
    46. <param-name>contextConfigLocationparam-name>
    47. <param-value>classpath:spring-mybatis.xmlparam-value>
    48. context-param>
    49. web-app>

     2.springmvc.xml

    注:视图解析器和扫描器必须有,剩下的看自己是否需要

    jsp和themleaf就一个视图解析器不同。其他配置都一样

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:context="http://www.springframework.org/schema/context"
    4. xmlns:mvc="http://www.springframework.org/schema/mvc"
    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 http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    6. <context:component-scan base-package="top.remained.controller">
    7. context:component-scan>
    8. <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    9. <property name="prefix" value="/WEB-INF/pages/"/>
    10. <property name="suffix" value=".jsp"/>
    11. bean>
    12. <mvc:default-servlet-handler/>
    13. <mvc:annotation-driven/>
    14. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
    15. beans>

    3.spring-mybatis.xml

    注:大部分配置的都是mybatis里面的东西(IOC),扫描组件除去控制层的原因是,springmvc已经扫描过了,可以但没必要

    过程

    1.加载 jdbc.property

    2.配置datasource  以bean的形式  
    3.配置sql工厂 以bean的形式  
    然后sql工厂 里面property 包括配好的数据源以ref="dataSource"  再加载 property mybatis的配置文件
    扫描注解包    
    扫描mapper包完成自动注入@AutoWired
            
           

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    4. 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    5. <context:component-scan base-package="top.remained">
    6. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    7. context:component-scan>
    8. <context:property-placeholder location="classpath:jdbc.properties"/>
    9. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    10. <property name="driverClassName" value="${jdbc.driver}"/>
    11. <property name="url" value="${jdbc.url}"/>
    12. <property name="username" value="${jdbc.user}"/>
    13. <property name="password" value="${jdbc.pwd}"/>
    14. bean>
    15. <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    16. <property name="dataSource" ref="dataSource"/>
    17. bean>
    18. <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
    19. <bean class="org.mybatis.spring.SqlSessionFactoryBean">
    20. <property name="typeAliasesPackage" value="top.remained.pojo"/>
    21. <property name="dataSource" ref="dataSource"/>
    22. <property name="configLocation" value="classpath:mybatis.xml"/>
    23. bean>
    24. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    25. <property name="basePackage" value="top.remained.mapper"/>
    26. bean>
    27. beans>

    4.mybatis.xml

    注:mybatis为什么只有一个分页插件,因为在spring-mybatis里面已经配置过了,

    分页插件 也可以在spring-mybatis里面配置,这样的话spring-mybatis就不用加载

    mybatis.xml这个文件,但是我感觉麻烦。分页插件也可以不用配置

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <plugins>
    6. <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
    7. plugins>
    8. configuration>

    5.jdbc.properties

    1. jdbc.driver=com.mysql.cj.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost/ssm?serverTimezone=UTC
    3. jdbc.user=root
    4. jdbc.pwd=123456

    6.log4j.xml

    1. log4j:configuration SYSTEM "log4j.dtd">
    2. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    3. <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    4. <param name="Encoding" value="UTF-8"/>
    5. <layout class="org.apache.log4j.PatternLayout">
    6. <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
    7. %m (%F:%L) \n"/>
    8. layout>
    9. appender>
    10. <logger name="java.sql">
    11. <level value="debug"/>
    12. logger>
    13. <logger name="org.apache.ibatis">
    14. <level value="info"/>
    15. logger>
    16. <root>
    17. <level value="debug"/>
    18. <appender-ref ref="STDOUT"/>
    19. root>
    20. log4j:configuration>

    三.测试

    1.UserController.java

    1. @Controller
    2. public class UserController {
    3. @RequestMapping("/")
    4. public String index(){
    5. // 不能直接获取员工信息,因为要获取页码数等传递到web
    6. return "index";
    7. }

    2.index.jsp

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4. <title>Titletitle>
    5. head>
    6. <body>
    7. 《success》
    8. <a href="/findAllUser">查询用户信息a>
    9. body>
    10. html>

    3.结果

     

     4.查用户结果也能出来

     

     四.一些错误

    1.注意这个注意这个注意这个!!!(如果缺少清除再重新打包

     2.之前没乱配置报的错

     Error creating bean with name 'xxxBizImpl': Unsatisfied dependency expressed through field 'xxxMapper';

    理解
    使用bean标签创建SqlSessionFactory对象,注入DataSource数据 相当于底层已经创建好SqlSession对象  交给Spring管理
    使用bean标签创建MapperConfigurer对象,用于扫描dao包,交给Spring管理
    spring 底层已经创建好SqlSession对象  交给Spring管理 所以你如果在mybatis里面配置 
     
           
       

    是不是有点多余,而且在mybatis里面配置这个,需要我们手动创建sqlSession对象 岂不是多此一举
    所以在spring里面配置这个就行

       
           
       

  • 相关阅读:
    OpenCV学习 基础图像操作(十七):泛洪与分水岭算法
    七叶皂苷/鼠尾草酸/氟伐他汀/替米沙坦/甘氨鹅去氧胆酸/绿原酸(CA)/厄洛替尼牛血清白蛋白纳米粒
    VScode创建ROS项目 ROS集成开发环境
    社会网络分析软件
    可视化大屏时代的到来:智慧城市管理的新思路
    扩展翡蜀定理问题
    vue下载Excel文件
    动态生成类--javassist的使用
    3. hdfs概述与高可用原理
    spring boot是如何加载Tomcat的
  • 原文地址:https://blog.csdn.net/qq_46058550/article/details/126002335