SpringMVC
《解释一下tomcat服务器中Application Context与thymeleaf在解析路径时的问题》
《关于tomcat》
在我们将项目部署到tomcat服务器上的时候,经常要配置如下的:
我们知道服务器可以部署多个项目(其就像一个箱子一样可以装多个项目),那么服务器在访问的时候如何区分多个项目呢?
答案是通过我们设置Application Context
比如SpringMVC项目就在:http://localhost:8080/(SpringMVC/)
Spring项目就在http://localhost:8080/(Spring/)
()部分里面是要我们自己设置Application Context决定的
《关于thymeleaf》
像这样写访问路径是有区别的
第一个是通过服务器解析路径自动加上我们配置的Application Context,路径为:http://localhost:8080/SpringMVC/hello
而第二个:http://localhost:8080/hello
其余在服务器中解析路径与thymeleaf同理
《SpringMVC的基本使用流程》
这个博客有相关完整代码:https://blog.csdn.net/qq_42148002/article/details/125283167
1.
新建maven项目,在pom.xml文件中,将打包方式写为war,自动引入web项目:
然后在pom.xml中加入相关jar包
2.
加入web配置文件,路径为:xx/src/main/webapp/WEB-INF/web.xml
在web.xml中配置前端控制器:DispatcherServlet其是管理控制层的组件
配置路径映射关系
3.
因为DispatcherServlet需要Controller组件,所以我们需要一个配置文件来管理Controller Bean
4.
写Controller组件
前端地址-->@RequestMapping(),根据()中的value值去匹配----------->匹配成功则找到响应方法------->响应方法返回逻辑视图-------->自动拼接地址(
前缀视图+逻辑视图+后缀视图)------>实现转发,到达相应物理页面
《@RequestMapping注解的具体使用》
《如何得到请求参数》
1.
2.
3.
拓展:
《在域对象中共享数据》
在request域中实现共享数据:
方法一:传统的用ServletAPI来实现
方法二:使用ModelAndView来共享数据
在Session域中和Application域中实现共享数据
均用老方法:
视图
1.
2.
3.
4.视图控制器
在SpringMVC.xml中配置:即与thymeleaf和注解扫描器等配置在一起
《SpringMVC处理ajax请求》
对pom.xml的配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.cilinmengye</groupId> 8 <artifactId>SpringMVC_ajax</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 <properties> 12 <maven.compiler.source>8</maven.compiler.source> 13 <maven.compiler.target>8</maven.compiler.target> 14 </properties> 15 <dependencies> 16 <!-- SpringMVC --> 17 <dependency> 18 <groupId>org.springframework</groupId> 19 <artifactId>spring-webmvc</artifactId> 20 <version>5.3.1</version> 21 </dependency> 22 <!-- 日志 --> 23 <dependency> 24 <groupId>ch.qos.logback</groupId> 25 <artifactId>logback-classic</artifactId> 26 <version>1.2.3</version> 27 </dependency> 28 <!-- ServletAPI --> 29 <dependency> 30 <groupId>javax.servlet</groupId> 31 <artifactId>javax.servlet-api</artifactId> 32 <version>3.1.0</version> 33 <scope>provided</scope> 34 </dependency> 35 <!-- Spring5和Thymeleaf整合包 --> 36 <dependency> 37 <groupId>org.thymeleaf</groupId> 38 <artifactId>thymeleaf-spring5</artifactId> 39 <version>3.0.12.RELEASE</version> 40 </dependency> 41 <dependency> 42 <groupId>com.fasterxml.jackson.core</groupId> 43 <artifactId>jackson-databind</artifactId> 44 <version>2.12.1</version> 45 </dependency> 46 </dependencies> 47 48 </project>
对web.xml的配置
<?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_4_0.xsd"
version="4.0">
<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>
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
对DispatchServlet.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--1 开启组件扫描--> <context:component-scan base-package="com.cilinmengye"/> <!--2 配置Thymeleaf视图解析器--> <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> <property name="order" value="1"/> <property name="characterEncoding" value="UTF-8"/> <property name="templateEngine"> <bean class="org.thymeleaf.spring5.SpringTemplateEngine"> <property name="templateResolver"> <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> <!-- 视图前缀 --> <property name="prefix" value="/WEB-INF/templates/"/> <!-- 视图后缀 --> <property name="suffix" value=".html"/> <property name="templateMode" value="HTML5"/> <property name="characterEncoding" value="UTF-8"/> </bean> </property> </bean> </property> </bean> <mvc:default-servlet-handler/> <!-- 开启mvc注解驱动 --> <mvc:annotation-driven/> <mvc:view-controller path="/" view-name="index"/> </beans>
对于其中的json数据:
我们可以用java对象接受,也可以用map来接受
如果我们要在后端给前端发送json数据,可以用
要做到上面的必要配置: