目录
springmvc入门案例(使用配置类替代原本的web.xml)
第二步、引入相应的依赖(servlet-api、spring-webmvc、)
1 ,发现:"hello world!" 没有被浏览器解析成功,报了404错误
前言
本篇博客让大家,基本了解springmvc的含义,应用场景,以及如何使用springmvc
,可以结合javaWeb 学习理解springmvc中的相关知识
springmvc概述
springmvc是控制层框架(controller层框架)主要用于客户端进行交互
- 可以和javaweb中servlet的使用进行联系
如下图所示
springmvc入门案例(使用配置类替代原本的web.xml)
第一步、创建一个web工程
第二步、引入相应的依赖(servlet-api、spring-webmvc、)
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
</dependencies>
第三步、编写 SpringMVC配置类,并开启包扫描功能
package com.it.heima.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.it.heima.controller")
public class springmvcConfig {
}
第四步、编写一个用于模拟业务处理的业务处理类
创建controller包,UserController类
在UserController类 使用到的注解有:
@Controller:是将当前的Controller类交给spring容器管理
@ResponseBody: 1 将数据以json格式返回给客户端 2 阻止视图解析器,对方法返回值进行解析,让返回值变成普通数据
@RequestMapping:客户端访问需要的映射路径,可以写在类上和方法上
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/hello")
public String hello2(){
System.out.println("hello");
return "hello world!";
}
}
第五步、编写springmvc配置文件
注意:用于替换web.xml文件(继承一个接口,实现里面的三个方法)
写一个配置类替代web.xml配置文件 ,去继承ADSI
package config;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
public class WebInitServletConfig extends AbstractDispatcherServletInitializer {
@Override
// 创建Servlet容器
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext an = new AnnotationConfigWebApplicationContext();
an.register(springmvcConfig.class);
return an;
}
// 浏览器访问的所有路径都会经过springmvc框架
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
第六步、启动测试
第七步,发现错误
1 ,发现:"hello world!" 没有被浏览器解析成功,报了404错误
根据常见的HTTP请求报错案例-CSDN博客 可知404错误 有两种情况
1 服务器没有接收到来自浏览器发送的请求
2 服务器将数据响应给浏览器出现错误
这里是第二种情况:服务器将数据响应给浏览器出现错误
总结:在使用springmvc框架后,方法的返回值会经过视图解析器解析,将返回值当作访问对应的界面(html/jsp )的路径。如:"/index.jsp"
解决办法
1 方法返回值写成访问目标文件(html/jsp )路径 ,如:"/index.jsp"
再一次运行tomcat,访问hello2方法
2 使用@Responsebody 注解 将返回值当作一般的数据,不让视图解析器解析
@ResponseBody: 1 将数据以json格式返回给客户端 2 阻止视图解析器,对方法返回值进行解析,让返回值变成普通数据
再一次运行tomcat,访问hello2方法
2 ,响应到浏览器出现问号
问题:在Java的Spring MVC中,如果返回的字符串在浏览器中显示为乱码(如三个问号),通常是因为响应内容的字符编码设置不正确。