<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
**③ 配置 SpringMVC-servlet.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 视图解析器 DispatcherServlet 给他的 ModelAndView -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/"/>
<!-- 后缀 -->
<property name="suffix" value=".html"/>
</bean>
<!-- Handler -->
<bean id="/myHtml" class="com.iceclean.controller.MyController"/>
**④ 直接使用**
public class MyController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// ModelAndView 模型和视图
ModelAndView modelAndView = new ModelAndView();
// 封装对象,放在 ModelAndView 中
modelAndView.addObject("message", "IceClean");
// 封装要跳转的视图,放在 ModelAndView 中
modelAndView.setViewName("myHtml");
return modelAndView;
}
}
**⑤ 过程中可能出现的问题**
(1) 由于 SpringMVC 默认支持 jsp,而屏蔽 html,所以会出现 jsp 界面可以打开而 html 页面为 404 的情况,这时可以在后面加上:
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
(2) 如果代码没有问题却出现了 404,考虑为 idea 没有帮我们自动导包,需要手动导包
在 Artifacts 中选择 WEF-INF,新建一个 lib 文件夹,点击加号将所有需要的包放入 lib 中
![在这里插入图片描述](https://img-blog.csdnimg.cn/f6ae2e5b93cf45e0b8f959eb51c4ff1f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ljZV9fQ2xlYW4=,size_16,color_FFFFFF,t_70)
* * *
[](https://gitee.com/vip204888/java-p7)2\. 执行流程
======================================================================
* 前端发出请求到 `DispatcherServlet` 请求转发器
* 请求转发器请求 `HandlerMapping` (处理器映射器)寻找 Handler(可以根据 xml 或者注解查找)
* 请求转发器调用 `HandlerAdapter` (处理器适配器)执行 Handler
* Handler 执行完成后给处理器适配器返回 ModelAndView
* 处理器适配器向请求转发器返回 ModelAndView
* 请求转发器请求视图解析器进行视图解析(根据逻辑视图名解析成真正的视图:html 或 jsp)
* 视图解析器向请求转发器返回 View
* 请求转发器对 View 进行渲染,填充到 request 中,最后向用户返回响应结果
* * *
[](https://gitee.com/vip204888/java-p7)3\. 使用注解开发(推荐使用)
==============================================================================
① 导入依赖和 web.xml 完全一样
② SpringMVC-servlet.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 使用注解开发 SpringMVC 的流程如下 -->
<!-- ① 自动扫描包,让指定包下的注解生效,由 IOC 容器统一管理 -->
<context:component-scan base-package="com.iceclean.controller"/>
<!-- ② 让 SpringMVC 不处理静态资源,如 .css .js .html 等 -->
<mvc:default-servlet-handler/>
<!-- ③ 支持 mvc 注解驱动 -->
<!-- 相当于自动完成 HandlerMapping 和 HandlerAdapter 的注入
使得要用到的注解 @RequestMapping 生效 -->
<mvc:annotation-driven/>
<!-- 视图解析器 DispatcherServlet 给他的 ModelAndView -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/"/>
<!-- 后缀 -->
<property name="suffix" value=".html"/>
</bean>
③ 直接使用
@Controller
public class BaseController {
@RequestMapping("/hello2333")
public String hello() {
// return 的东西会被视图解析器处理
return "hello";
}
}
其中 @Controller 的作用和 @Component 的作用相同,代表该类是一个 bean
前提是 Spring 的配置中有扫描到该类(一般为扫描该类所在的包)
再而,被 @Controller 注解的类中的所有方法,如果返回值是 String 且有具体的页面可以跳转,就会被视图解析器解析
如果不想被视图解析器解析,可以在需要的方法前加上 @ResponseBody,变成普通的方法返回普通的字符串
如果对一个类使用 @RestController,则该类的所有方法都不会被视图解析器解析
@RequestMapping() 的作用相当于起别名,在进行访问时需要填写该别名
* * *
[](https://gitee.com/vip204888/java-p7)4\. RestFul 风格
============================================================================
**① 基础使用**
使用 {xxx} 代表 url 中该位置的值将被赋值到 xxx 变量中,如
`xxxx/add/1/2` 那么 a=1, b=2
@GetMapping("/add/{a}/{b}")
public String hello(@PathVariable int a, @PathVariable int b){
// ...
return "hello";
}
**② 衍生用法**
### 最后
> 由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!
![](https://img-blog.csdnimg.cn/img_convert/536670449d83818b4dd6a3499f338731.png)
**需要这份文档的朋友可以帮忙点个赞,点击下方神秘超链接,就可以免费获取到了,还有小编准备的一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》**
##### [资料领取链接:Java进阶学习路线图(Xmind)+《Java面试必备指南》](https://gitee.com/vip204888/java-p7)
return "hello";
}
② 衍生用法
最后
由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!
[外链图片转存中…(img-QptgcRqV-1628389638135)]
需要这份文档的朋友可以帮忙点个赞,点击下方神秘超链接,就可以免费获取到了,还有小编准备的一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》