SpringMVC-Here we go~
快速搭建一个SpringMVC项目
配置文件版
【新建普通Maven项目+引入相关依赖+Web框架支持】
【导入SpringMVC的依赖】
【配置web.xml,注册DispatcherServlet】
<!--1. 注册DispatcherServlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--关联SpringMVC的配置文件:【servlet-name】-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--设置启动级别为1-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--
'/' 匹配所有的请求(不包括.jsp)
'/*' 匹配所有的请求(包含.jsp)
-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
【nameservlet.xml】
// 格式与applicationConfig.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
http://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
1. 获取ModelAndView的数据
2. 解析ModelAndView中视图的名字
3. 根据视图名找到对应视图(prefix+name+suffix)
4. 将数据渲染至视图上
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<!--Handler-->
<bean id="/hello" class="cn.iris.controller.HelloController"/>
</beans>
【编写一个业务类(cn.iris.controller.HelloController.class)】(记得在springmvc-servlet.xml中配置Bean)
package cn.iris.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Iris 2021/8/14
* @implements 首先导入接口
*/
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
// 封装对象,放在ModelAndView中,Model
mv.addObject("msg", "HelloSpringMVC");
// 封装要跳转的视图,放在ModelAndView中
/* hello:/WEB-INF/jsp/hello.jsp */
mv.setViewName("hello");
return mv;
}
}
【将业务类中跳转的jsp页面创建出来(WEB-INF/jsp/hello.jsp)】
<%--
Created by IntelliJ IDEA.
User: asus
Date: 2021/8/14
Time: 15:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
【配置好Tomcat就可以跑起来了~】
【tips:可能遇到的问题(404)】
- 查看控制台输出 》》是否缺少jar包
- 若jar包存在,显示无法输出,在IDEA项目发布中添加lib依赖(IDEA选手)
- 【重启即可解决[狗头出现]】
注解版开发
【创建一个Maven项目+引入相关依赖+web框架支持】
【解决文件扫描问题】
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<!-- 由于修改了默认的resource目录,导致src/main/resources的所有文件都不能被扫描,因此还要配多一个 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
【配置web.xml】(同上)
【项目Artifacts添加lib】(IDeA选手解决404报错)
【配置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
http://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">
<!--自动扫描包-->
<context:component-scan base-package="cn.iris.controller"/>
<!--让SpringMVC不处理静态页面(.html/.css/.js/.mp3/...)-->
<mvc:default-servlet-handler />
<!--
支持MVC注解驱动
在Spring中一般采用【@RequestMapping】注解来完成映射关系
要使【@RequestMapping】注解生效需要在上下文中注册
【DefaultAnnotationHandlerMapping】
【AnnotationMethodHandlerAdapter】
这两个实例分别在类级别和方法级别处理
Annotation-driven配置帮助我们自动完成上述两个实例的注入
-->
<mvc:annotation-driven />
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
【WEB-INF目录下创建jsp/hello.jsp】(格式同上)
【使用注解编写Controller--模拟业务操作】
package cn.iris.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
//@RequestMapping("/hello")
/**
* @author Iris 2021/8/15
*/
public class HelloController {
@RequestMapping("/hello")
/**
* 如果类上方加RequestMapping,访问地址则会变成:
* localhost:8080/springmvc/hello/hello
*/
public String hello(Model model) {
// 封装数据
model.addAttribute("msg","Here we go~");
// 会被视图解析器处理
return "hello";
}
}
【配置Tomcat,跑起来~】
【tips:注意点】
- 使用SpringMVC必须配置三大件:
- 处理器映射器
- 处理器适配器
- 视图解析器
- 开发时,仅需手动配置视图解析器,处理器映射器和处理器适配器仅需开启注解驱动即可(可省去大段xml配置)