对应的SpringMVC 中的请求 环境设置
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>SpringMVC_Demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- servlet 规范坐标-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jsp坐标-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<!-- spring的坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<!-- springMvc的坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- springweb坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.4.49.ALL</version>
</dependency>
<!-- 对应JSON的坐标-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
<!-- 构建-->
<build>
<!--maven插件-->
<plugins>
<!--jdk编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!--加入对应的maven版本号码-->
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<!--tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!--端口控制-->
<port>80</port>
<!--项目路径控制意味着http://localhost:8080/abc-->
<path>/Spring_exploded</path>
<!--编码-->
<uriEncoding>UTF-8</uriEncoding>
<ignorePackaging>true</ignorePackaging>
</configuration>
</plugin>
</plugins>
</build>
</project>
对应的JSON坐标导入 对应后面的 响应数据类型转换为 JSON
web.xml 对应的配置
分别是 中文过滤器 对应中文的转换
以及DispatcherServlet 引入spring-mvc.xml
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>enconding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 从类路径下 进行加载文件-->
<param-value>classpath*:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
请求
SpringMVC将传递的参数封装到处理器方法的形参中 达到快速访问参数的目的
请求参数类型
普通类型参数
POJO(引用类型)类型参数
当POJO中使用简单类型属性时 参数名称与POJO类属性名保持一致
当类型中 和普通参数出现重名的时候 比如age
则age 进行两次传参
使用@RequstParam注解进行区分
@Controller
@RequestMapping("/user")
public class controller {
@RequestMapping("/requestparaml1")
public String requestParaml1(@DateTimeFormat(pattern = "yyy-MM-dd") Date date){
System.out.println(date);
return "page.jsp";
}
@RequestMapping("/requestparaml2")
// 变量名 转变 地址栏 传入 username 这边接入 的变量名 为 name
// required = true 强制必须传参 无参 报错
// defaultValue 传参对应的默认值默认值
public String requestParaml2(@RequestParam(value = "username",required = true,defaultValue = "dushaoqin") String name){
System.out.println();
return "page.jsp";
}
@RequestMapping("/requestparaml3")
public String requestParaml3(User user){
System.out.println(user);
return "page.jsp";
}
// http://localhost/Spring_base_war_exploded/requestparaml4?niok=jock1&niok=jock2&niok=tom3
@RequestMapping("/requestparaml4")
public String requestParaml4(User user){
System.out.println(user);
return "page.jsp";
}
@RequestMapping("/requestparaml6")
public String requestParaml6(){
System.out.println();
return "page.jsp";
}
// params 表示当前传入 参数 必须携带对饮对应的name
@RequestMapping(value="/requestparaml7",params = "name")
public String requestParaml7(){
System.out.println();
return "page.jsp";
}
@RequestMapping("/requestparaml8")
public String requestParaml8(){
System.out.println();
return "page.jsp";
}
}
请求映射
请求返回的页面 地址默认为当前路径
当设置了公共的访问前缀后 当前路径发生了变换 需要根据变化修改地址 或修改访问页面的路径

@RequestMapping属性
-
Value Method
Value=” ” 设定请求路径 于path属性 value属性相同 Method =”” 设定请求方式 Params=”” 设定请求参数条件 Headers =“content-type-text/” 设定请求消息头条件 Consumes=“text/” 用于指定可以接收的请求的正文类别 Produces=“text/” 用于指定可以生成的请求的正文类别
对应的格式转换 例举 日期类型
@RequestMapping("/requestparaml1")
public String requestParaml1(@DateTimeFormat(pattern = "yyy-MM-dd") Date date){
System.out.println(date);
return "page.jsp";
}
可以机型自己创建一个 对应的 转换器 对应的格式 类型 SPringMVC默认的格式是
yyyy/MM/dd
使用的是 时候 SPring-mvc.xml进行配置
<!-- 配置一个自定义的类型转换器-->
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.yl.converter.MyDateConverter"></bean>
</set>
</property>
</bean>
对应的实体类 MyDateConverter
public class MyDateConverter implements Converter<String, Date>{
@Override
public Date convert(String s) {
// 优先 对传入的数据 进行格式检验
DateFormat df= new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
// 此处的异常 必须这里处理 不能再函数外 进行抛出异常 接口再定义的时候原始不携带任何的异常
try {
date = df.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
也可以是SPring-mvc.xml进行配置
<!-- 声明自定义的转换格式 并覆盖系统原有的转换格式-->
<!-- 启动转换器Converter-->
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 设定格式类型Converter 注册为Bean 受springMvc管理-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 注入格式化-->
<property name="formatters">
<!-- 使用set保障相同类型的转换仅保留一个 避免冲突-->
<set>
<!-- 设置具体的格式 覆盖旧的规则-->
<bean class="org.springframework.format.datetime.DateFormatter">
<!-- 对应规则类型-->
<property name="pattern" value="yyy-MM-dd"/>
</bean>
</set>
</property>
</bean>
这样的写法 也可以直接从对应的root路径下进行访问
Public String requestURL(){
Return “/page.sjp” 直接从对应的root路径下进行访问
}
本文详细介绍了SpringMVC项目的基础配置,包括pom.xml中的依赖设置,如Spring、SpringWeb、MyBatis等。同时,展示了web.xml中关于字符编码过滤器和DispatcherServlet的配置。讲解了如何利用@RequestParam注解处理请求参数,包括普通类型、POJO类型、多个同名参数等情况,并提及了日期格式转换的处理方式。此外,还探讨了@RequestMapping注解的属性用法,如Value、Method、Params、Headers、Consumes和Produces。最后,提到了自定义类型转换器的实现及其配置。
1083

被折叠的 条评论
为什么被折叠?



