文章目录
1. 调试项目基础
创建一个mavan项目,项目结构如下:
其中,具体代码如下:
pom.xml
<groupId>org.sky</groupId>
<artifactId>javassm</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
SpringConfig.java
:扫描除了Controller的所有地方
@Configuration
@ComponentScan(basePackages = "com.sky", useDefaultFilters = true, excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)})
public class SpringConfig {
}
SpringMvcConfig.java
:扫描Controller和Configuration
@Configuration
@ComponentScan(basePackages = "com.sky", useDefaultFilters = false, includeFilters =
{@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)})
public class SpringMvcConfig {
}
HelloController.java
:测试controller层
@RestController
public class HelloController {
@Autowired
HelloService helloService;
@GetMapping("/hello")
public String hello(){
return helloService.Hello();
}
}
HelloService.java
:测试service层
@Service
public class HelloService {
public String Hello(){
return "hello java";
}
}
之后配置好tomcat,启动项目,访问http://localhost:8080/hello
,结果如下图:
2. 加载静态资源
2.1 创建一个html
内容随便写点儿
2.2 操作
继承WebMvcConfigurationSupport
,重写addResourceHandlers
方法。具体如下:
@Configuration
@ComponentScan(basePackages = "com.sky", useDefaultFilters = false, includeFilters =
{@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)})
public class SpringMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
2.3 验证
启动项目,键入http://localhost:8080/static/hello.html
,结果如下图即为成功。
3. 设置拦截器
3.1 创建一个拦截器
MyInterceptor.java
:测试
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
3.2 修改SpringMvcConfig
添加以下两个方法
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor()).addPathPatterns("/**");
}
@Bean
public MyInterceptor myInterceptor(){
return new MyInterceptor();
}
3.3 实验
重启项目,访问http://localhost:8080/static/hello.html
,查看控制台,即可发现下面内容:
4 Json转换
4.1 添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
4.2 准备测试数据
在HelloController.java
中添加以下代码:
@GetMapping("/data")
public List<String> getData(){
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
arrayList.add("hello, " + i);
}
return arrayList;
}
4.3 转换代码
在SpringMvcConfig.java
中添加以下代码:
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
converters.add(fastJsonHttpMessageConverter);
}
4.4 实验
重启项目,访问http://localhost:8080/data
,可发现下面内容: