SSM框架的搭建 +其他组件整合
一.Spring与Spring MVC 的搭建
1.maven工程转化为web项目
首先 我们创建一个maven工程
这样就创建了一个maven工程了:
作为当前的这个工程 他是一个java web应用 所以呢我们要在基于maven的基础上 我们要进行一个web应用的改造
在右侧来进行配置 三个地方:
第一个是描述我们的web .xml的文件保存到哪一个路径下
第二是关于我们web应用的资源 它保存在哪一个目录呢
定位在我们刚才创建的webapp的这个目录就好了
而在下面我们还要创建一个全新的artifact 也就是如何运行
进入启动配置的界面
目前它是默认把所有的资源都增加到了左侧的发布的列表中 我们不需要做额外的调整
直接点击ok就可以了
此时此刻我们就将当前的工程转化为一个web的应用
可以在webapp的目录下新建一个测试用的html页 比如index.html(这时候的名字一定要是index.html 其他的比如test.html 我们的等下发布到Tomcat的时候 它是找不到的)
然后验证当前的这个配置是否生效 这里我们要将工程发布在tomcat下 具体的做法是点击这里的
Deployment目录:
下面的上下文只保留 / 就可以了 这也是我们大多数web应用的默认是设置:
那回到server目录下:
这样就行了 下面我们选择start tomcat 选择启动
当启动成功以后 我们打开浏览器
这样就代表我们刚才web应用的发布就成功了 我们可以在这个基础上进行spring和spring mvc的配置
2.Spring与Spring MVC 的搭建操作步骤
(1)依赖spring-webmvc
刚才 测试发布是没有问题的 首先我们定位到我们的imooc-reader pom.xml文件下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>bishe</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--aliyun maven镜像-->
<repositories>
<repository>
<id>ayilun</id>
<name>ayiyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<!--spring提供的一个让springMVC支持freemarker的组件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<!--在项目中涉及了大量的ajax 的前后json交互 json 序列化的工具包我们也是需要的-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
将这些依赖加入后 千万不要忘记这一件重要的事情:之前讲过所有的新增的依赖在被加入以后 默认是不会自动发布到我们tomcat应用中
至此 第一步的pom.xml的配置我们就完成了
(2)配置DispatcherServlet
<?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">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup><!--代表在web项目启动的时候就去初始化这个servlet-->
</servlet>
</web-app>
(3)启动Spring-MVC注解模式
在applicationContext.xml核心配置文件中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx"
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/task
http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 3.开启springMVC的注解模式-->
<context:component-scan base-package="com.puj"/><!--这是spring框架开启注解模式-->
<!-- 真正开始MVC注解模式的是这一句话-->
<mvc:annotation-driven/>
<mvc:default-servlet-handler/><!--这个配置的作用是将我们像css js图片的 静态资源排除在外 进而提高了我们spring mvc对url的处理效率-->
(4)配置请求和响应的字符集
1.对于请求中 post请求是通过在web.xml中配置一个filter过滤器来实现的,get请求在Tomcat8.0后就默认是采用utf-8格式 不要配置。
<!-- 解决中文乱码问题 写一个filter 主要是对post请求-->
<filter>
<filter-name>characterFilter</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>
</filter>
<filter-mapping>
<filter-name>characterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.对于响应 你在applicationContext.xml 配置一个 mvc:message-converters 消息转化器
<!--3开启MVC注解模式和4.解决响应中的中文乱码问题-->
<mvc:annotation-driven>
<mvc:message-converters>
<!--这个类是用于处理我们响应中输出...以及字符集-->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
(5)配置FreeMarker模板引擎
1.引入依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<!--spring提供的一个让springMVC支持freemarker的组件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
2.在applicationContext.xml中 配置FreeMarker
<!--5.配置freemarker模板引擎 要配两个bean-->
<!--这个类是用于通知我们springMVC去哪一个目录下去加载我们freemarker脚本-->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl"/>
<property name="freemarkerSettings"><!--这是针对于freemarker本身需要设置的参数-->
<props>
<prop key="defaultEncoding">UTF-8</prop>
</props>
</property>
</bean>
<bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html;charset=utf-8"/>
<property name="suffix" value=".ftl"/>
</bean>
(6)配置Json序列化组件
在applicationContext.xml中 添加value>application/json;charset=utf-8
<mvc:annotation-driven>
<mvc:message-converters>
<!--这个类是用于处理我们响应中输出...以及字符集-->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<value>application/json;charset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
3.测试
创建一个TestController
(1)第一部分测试freemarker是否能正常地使用呢?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
测试页面
</body>
</html>
@Controller
public class TestController {
/*测试freemarker是否能正常的使用*/
@GetMapping("/test/t1")
public ModelAndView test1(){
return new ModelAndView("/test");
}
(2)第二部分测试json序列化输出
/*测试json*/
@GetMapping("/test/t2")
@ResponseBody
public Map test2(){
Map result = new HashMap();
result.put("test","测试文本");
return result;
}
启动tomcat:
输入一下网址 看能否正常的输出
如果能成功跳转到以上的页面 那就说明我们spring和spring mvc搭建成功。