分享常用的SSM配置方法一pom.xml和web.xml

分享常用的SSM配置方法

虽然现在SpringBoot是一个大趋势,但是传统的SSM因为配置可以完全由开发人员掌握,在加上目前很多企业的一些老项目还无法升级成SpringBoot,所以在国内依旧有很大的使用空间,这里就从头来做一次SSM的配置过程(基于Maven的)。

1.什么是SSM

既然要做一个SSM的配置文件,我们首先要知道什么是SSM,SSM就是三大框架SpringMVC,Spring和Mybatis的简称,即使用这三个框架进行的web开发就叫做基于SSM的web开发。

2.配置过程

1.pom.xml和web.xml配置

由于我们是基于Maven的配置过程,首先需要使用maven来创建一个Web应用框架。网上有大量地这种文章,我就不详细说明了。在你创建完基于maven的框架之后会获得一个如下图的基本web结构,其中最重要的两个配置文件就是pom.xml和web.xml
在这里插入图片描述
其中pom.xml主要是用于获取和管理外部依赖的jar包的,因为ssm中的三个框架都不是java本身提供的,使用pom.xml获取相关jar包非常好用。
pom.xml需要的常用dependencies配置如下,包含了ssm框架的所有jar包和一些常用工具。
当然,jar包的导入规则是越少越好如果你自己创建一个项目,需要将里面不需要的jar包直接删除掉。

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>

        <!--定义版本信息参数,提供下面引入-->
        <org.spring.version>4.3.9.RELEASE</org.spring.version>
        <org.mybatis.version>3.3.1</org.mybatis.version>
        <org.mybatis.spring.version>1.2.3</org.mybatis.spring.version>
    </properties>
    <dependencies>
		<dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger2</artifactId>
		    <version>2.4.0</version>
		</dependency>
		<dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger-ui</artifactId>
		    <version>2.4.0</version>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>22.0</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-jdbc -->
		<dependency>
		    <groupId>org.springframework.session</groupId>
		    <artifactId>spring-session-jdbc</artifactId>
		    <version>1.2.0.RELEASE</version>
		</dependency>
	    <dependency>
	      <groupId>com.auth0</groupId>
	      <artifactId>java-jwt</artifactId>
	      <version>3.4.0</version>
	    </dependency>
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3</version>
		</dependency>
            <!-- pdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.10</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
    	<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
    	<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.17</version>
		</dependency>
    	<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.3</version>
		</dependency>
		<dependency>
		    <groupId>org.mybatis.generator</groupId>
		    <artifactId>mybatis-generator-core</artifactId>
		    <version>1.3.5</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.3.1</version>
		</dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
<!--         谷歌生成二维码 -->
		<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>core</artifactId>
		    <version>3.3.1</version>
		</dependency>
		<dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.1</version>
        </dependency>
        <!--servlet-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>7.0.64</version>
        </dependency>
		
		<!--跨域-->
        <dependency>
            <groupId>com.thetransactioncompany</groupId>
            <artifactId>cors-filter</artifactId>
            <version>2.5</version>
        </dependency>

        <!--spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>

            <!--引入上面定义的版本信息-->
            <version>${org.spring.version}</version>
        </dependency>
        <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${org.spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${org.spring.version}</version>
		</dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${org.spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${org.spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.spring.version}</version>
        </dependency>
        <!--aop 注解-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.6.12</version>
        </dependency>
		<dependency>
			<groupId>com.tencentcloudapi</groupId>
			<artifactId>tencentcloud-sdk-java</artifactId>
			<version>3.1.42</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.31</version>
		</dependency>
        <!--json 序列化和反序列化-->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.12</version>
        </dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.8.8</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.8</version>
		</dependency>
       <dependency>
	    <groupId>org.json</groupId>
	    <artifactId>json</artifactId>
	    <version>20190722</version>
	</dependency>

        <!--日志-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
            <scope>compile</scope>
        </dependency>

        <!--Java 库-->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>20.0</version>
        </dependency>

        <!--工具类库-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>

        <!--集合工具类-->
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.3</version>
        </dependency>

        <!-- id加密解密 -->
        <dependency>
            <groupId>org.hashids</groupId>
            <artifactId>hashids</artifactId>
            <version>1.0.2</version>
        </dependency>
	  	<dependency>
	  		<groupId>org.apache.httpcomponents</groupId>
	  		<artifactId>httpclient</artifactId>
	  		<version>4.1.2</version>
	  	</dependency>
	  	<dependency>
	  		<groupId>org.htmlparser</groupId>
	  		<artifactId>htmlparser</artifactId>
	  		<version>2.1</version>
	  	</dependency>
	  	<dependency>
	  		<groupId>axis</groupId>
	  		<artifactId>axis</artifactId>
	  		<version>1.4</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
	  	<dependency>
	  		<groupId>axis</groupId>
	  		<artifactId>axis-ant</artifactId>
	  		<version>1.4</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
	  	<dependency>
	  		<groupId>axis</groupId>
	  		<artifactId>axis-jaxrpc</artifactId>
	  		<version>1.4</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
	  	<dependency>
	  		<groupId>axis</groupId>
	  		<artifactId>axis-saaj</artifactId>
	  		<version>1.4</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
	  	<dependency>
	  		<groupId>axis</groupId>
	  		<artifactId>axis-schema</artifactId>
	  		<version>1.3</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
	  	<dependency>
	  		<groupId>axis</groupId>
	  		<artifactId>axis-wsdl4j</artifactId>
	  		<version>1.5.1</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
	  	<dependency>
	  		<groupId>org.bouncycastle</groupId>
	  		<artifactId>bcprov-jdk16</artifactId>
	  		<version>1.46</version>
	  		<type>jar</type>
	  		<scope>compile</scope>
	  	</dependency>
    </dependencies>

说完了pom.xml,现在在说说web.xml的配置
先给出一个常用的配置方法:

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>test</display-name>
    <!--过滤器-->
    <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>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--监听器-->
    <!--监听 web 容器的启动和关闭-->
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <!-- 将 web 容器和 spring 容器进行整合的监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:applicationContext-*.xml
        </param-value>
    </context-param>
    <!--使用默认文件名 dispatcher-servlet.xml-->
    <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>/</url-pattern>
    </servlet-mapping>
</web-app>

下面我们一点点讲解一下这些配置的意思。
1.首先是<display-name>顾名思义就是展示的名称,一般来说和你的项目名称设置成一样,没有什么特殊的作用。作为描述性语句。
2.然后是<filter><filter-mapping>filter是指的过滤器,也就是说当你访问你web项目的某一个url的时候,他会首先执行过滤器中的方法将这个访问“过滤”一次,方便你进行访问控制,比如说登录校验等,不登录就无法访问就可以通过filter判断。而<filter-mapping>一般都是和一个filter绑定的,用于表示哪些url需要过滤,而/*则代表所有url全部过滤,我们的配置中展示的是一个编码过滤器,是springmvc自带的过滤器,用于将前台发送的url和参数转换成需要的编码格式,防止前后端编码问题产生的不必要的bug。如果需要自己写过滤器,实现javax.servlet.Filter接口,然后在web.xml里面配置一个filter和filter-mapping即可。
3.listener是配置spring的监听器。监听器需要实现javax.servlet.ServletContestListener接口。它随着web应用启动而执行,且只执行一次,当web程序关闭时,监听器也会销毁。所以,监听器一般用于初始化的工作,比如添加配置,整合各个资源等。在我们的配置中,使用了一个将 web 容器和 spring 容器进行整合的监听器,就是起到初始化的作用。
4.context-param指定配置文件位置。每个<context-param>元素含有一对参数名和参数值(param-nameparam-value),用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,在web应用的整个生命周期中上下文初始化参数都存在,任意的Servlet和jsp都可以随时随地访问它。
5.servlet配置使用spring实现的servlet类,方便spring控制整个web工程。在servlet配置中可以指定servlet相关配置文件的位置和名称,如果不配置,就是默认位置。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值