[springMVC]03.19复习springMVC简介以及helloworld
springMVC
什么是MVC?
是一种软件架构的思想,将软件按照模型(model),视图(view),控制器(controller)来划分
module:模型层,指工程中JavaBean,作用是处理数据(分为实体类用来和数据库的字段对应封装,另一种是业务处理,用于处理业务逻辑和数据访问)
view:视图层,指的是html和jsp等页面,左右为和用户进行交互,展示数据
controller:控制层,指的是servlet,用于接受请求和响应浏览器,一遍不做业务操作,都是在里面调用service然后调用serviceImpl再调用mapper再接着调用xml
SpringMVC工作流程:浏览器通过view发送request,地址符合前端控制器的web.xml中url-pattern中的值,然后交给DispatcherServlet处理,读取SpringMVC核心配置文件在init-param中里面读取,然后再springMVC.xml中扫描组件context:component-scan中配置的开启组件扫描再找到@controller中@RequestMapping返回的字符串,之后发给springMVC的视图解析器(也就是springMVC.xml中配置的视图解析器),加上前缀后缀之后转发到用户所看的页面.
什么是SpringMVC
- 是Spring的一个后续产品,是Spring的一个子项目
- SpringMVC是Spring为表述层开发的一整套完整的解决方案,在表述层框架经历了strust(对日必学) WebWork Strust2等很多产品的更新迭代之后,作为了业界主要的表述层开发的首选方案.
SpringMVC特点
- 能与IOC容器完整对接
- 通过强大的DispatcherServlet,对请求和响应进行统一处理
- 代码简洁,大大提升开发效率
- 性能卓越
HelloWorld
- 创建maven工程并引入依赖和打包方式
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
- 在src/main目录下创建webapp文件夹
- 在project structure的Modules中点击Web中的Deployment Descriptiors+号添加web.xml(记得修改路径).
- 注册前端控制器和配置初始化springMVC.xml的路径参数
<!--注册前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 新建对应param-value的springMVC.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"
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">
<!--扫描组件-->
<context:component-scan base-package="com.sli.mvc.controller"></context:component-scan>
<!--视图解析器-->
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine">
<bean class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<!-- 视图前缀 -->
<property name="prefix" value="/WEB-INF/templates/"/>
<!-- 视图后缀 -->
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8" />
</bean>
</property>
</bean>
</property>
</bean>
</beans>
- 在java中建包com.sli.mvc.controller和hello的类
@Controller
public class hello {
@RequestMapping("/")
public String index(){
return "index";
}
}
- 因为视图解析器页面的目录多了哥templates,所以在webapp/WEB-INF下面新建目录templates
- 建对应的index.html 页面内h1标签中写上HelloWorld即可