SpringMVC
1.初识SpringMVC
-
新建项目,导入依赖
<!--导入依赖-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies> -
新建一个Moudle,添加web支持
右击 新建的Moudle,选择add framework support
-
确定导入了SpringMVC依赖
-
右侧栏maven检查依赖是否导入
-
Project Settings 中Aetifacts,选择项目将依赖导入 WEB-INF下的lib包中
-
-
配置web.xml,注册DispatcherServlet
2. 注解开发SpringMVC
配置web.xml文件
注意点:
-
web.xml版本要用最新版
-
注册DispatcherServlet
-
关联SpringMVC的配置文件
-
启动级别为1
-
映射路径为 / 【不要用/*,会404】
web.xml
添加Spring MVC配置文件
springmvc-servlet
在视图解析器中我们把所有的视图都放在/WEB-INF/目录下,这样可以保证视图安全,因为这个目录下的文件,客户端不能直接访问。
创建Controller
HelloController
hello.jsp
<%
@Controller
//代表这个类会被Spring接管,被这个注解的类中的所有方法,如果返回值是String,并且有具体页面可以跳转那么就会被视图解析器解析
@RequestMapping
上下级关系:要访问的页面就是 8080/c1/hello
return 返回包下的页面【拼接】
访问 admin 下的 test.jsp 页面
return "admin/test";
RestFul风格讲解
原来的:http://localhost:8080/add?a=1&b=2
RestFul : http://localhost:8080/add/a/b
利用PathVariable
重定向和转发
可以不用视图解析器,在类中将路径写死
@Controller
public class RestFulController {
@RequestMapping("/m1")
public String hello(Model model){
model.addAttribute("msg","测试");
//转发
return "WEB-INF/jsp/hello.jsp";
//重定向
//return "redirect:/WEB-INF/jsp/hello.jsp";
}
}
接受请求参数及数据回显
1.提交的域名称和处理方法的参数名一致
可以直接接收
2.提交的域名称和处理方法的参数不一致
处理方法:
//@RequestParam("username") username提交的域的名称
@Controller
public class RestFulController {
@RequestMapping("/m1")
public String hello(@RequestParam("username") String name, Model model) {
return "hello";
}
}
3.提交的是一个对象
-
要求提交的表单域和对象的属性名一致,参数使用对象即可
乱码问题
方法一:自定义过滤器
public class EncodingFilter implements Filter {
web.xml
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.sr.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
方法二:配置SpringMVC的乱码过滤 (推荐)
<!--配置SpringMVC的乱码过滤-->
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
JSON
JSON是字符串表示的格式
前后端分离
<script type="text/javascript">
//将 js 对象转换为json对象
var json = JSON.stringify(user);
console.log(json);
//将json对象 转换为js对象
var obj = JSON.parse(json);
console.log(obj);
</script>
Controller返回JSON数据
使用jackson
导入jackson包
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
JSON乱码问题配置
springMVC-servlet.xml
<!--JSON乱码问题配置-->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
方法一:
@ResponseBody 配合 @Controller 使用,就不会走视图解析器,会直接返回一个字符串
方法二:
@RestController 不会走视图解析器,会直接返回一个字符串
返回多个对象
时间类:在jackson使用这节课
Fastjson
SSM整合
-
新建一个Maven项目!ssmbuild ,添加web的支持
-
导入相关的pom依赖
<!--依赖:-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<!--数据库连接池 c3p0-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>