springMVC入门到搭建
一 前言
本篇内容主要是springMVC的入门应用,大体会说明springMVC的工作流程,简单的使用springMVC进行视图渲染,不会过多的讲解JSP内容,原因是实际开发中基本不会使用到JSP;structs已被淘汰,读者不应该发时间学习这些过期技术;
说到spirngMVC,最重要的还是懂什么MVC,因为不管那种语言,所有的编程思想都相同,前端的编程语言,后端的编程语言都会用MVC;MVC(Model-View-Controller), Model 是指数据模型,后端常见的就是将数据封装进实体;View表示视图,常见的视图有 JSP,Thymeleaf;Controller 表示控制器,控制器的作用处理客户端发起的请求,对用户提交的信息进行处理;
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
二 SpringMVC工作流程
- 用户发起的所有请求都会到达
前端控制器
(DispatcherServlet); - 前端控制器会查询合适的
处理映射器
(handler mapping); - 处理映射器就会根据用户提交的RUL信息 筛选合适的
控制器
(controller); - 此时,前端控制器才会将用户的提交的信息 发送给
控制器
处理数据;数据处理完成后才会产生数据模型(Model)和视图名称,返回给前端控制器; - 前端控制器将根据视图名称通过
视图解析器
(view resolver)匹配适合的视图; - 前端控制器会将数据模型交给视图;
- 视图将数据渲染,响应给客户端;
三 springMVC入门搭建
3.1 搭建工程
在IDEA中使用 maven 模板 创建 spring WEB 项目
创建完成的项目在main目录下面只有 webapp 目录,需要补充 java , resources 文件夹;并且点击 java目录右键,mark directory as Source Root
, 标记 resources 目录为 Resource Root
;
除了spring核心依赖还需要如下依赖引入
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.1.RELEASE</version>
</dependency>
<!-- servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
web 项目打包方式为 war包,如果不支持支持maven打包为war包还需要引入 插件
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
3.2 webConfig
在 java目录下新建com.zszxz.config包, 对视图配置如下
/**
* @Author lsc
* <p> </p>
*/
@Configuration
@EnableWebMvc// 启用springMVC
@ComponentScan("com.zszxz.controller")// 组件扫描
public class WebConfig implements WebMvcConfigurer{
// 视图解析器
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
// 静态资源处理
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
dispatcher,配置如下,其作用代替web.xml配置
/**
* @Author lsc
* <p> </p>
*/
public class WebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(WebConfig.class);
context.setServletContext(servletContext);
ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
servlet.addMapping("/");
servlet.setLoadOnStartup(1);
}
}
3.3 controller
在com.zszxz下新建controller 包, HelloController 内容如下
/**
* @Author lsc
* <p> </p>
*/
@Controller// 声明一个控制器
public class HelloController {
// 接收GET请求
@RequestMapping(value = "/zszxz",method = RequestMethod.GET)
public String hello(){
// 视图名称
return "hello";
}
}
3.4 hello.jsp
因为 视图解析配置的路径是 /WEB-INF/views/
, 故 需要在 webapp/WEB-INF 底下 新建 views 目录; 由于 控制层编写的 hello 方法 的视图名称是 hello, 故需要在 views目录下新建 hello.jsp 内容如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
hello springMVC
</body>
</html>
3.5 IDEA中配置tomcat
tomcat 官网 http://tomcat.apache.org/
- IDEA 右上角点击Add Configuration;
- 页面点击 + 号, 找到 tomcat , 选择Local;
- server选项卡中点击configure..按钮配置 tomcat 解压目录;
- deploment 中 选择 + 号,添加当前工程后确定
最终配置显示如下
配置成功后,在 IDEA下方会弹出Tomcat 栏目, 启动工程 默认 弹到 http://localhost:8080/spring_mvc_war/ 页面 ,也就是 Index 页面内容 ;
浏览器地址输入 http://localhost:8080/spring_mvc_war/zszxz 页面 转发成功,内容如下
hello springMVC
四 打包部署
- 本次部署的tomcat 是 8.x版本,读者可以到官网自行下载后解压至自定义目录;
- 进入当前工程目录 ,在 终端下 敲击命令
mvn clean package
打包 工程为war包,生成目录为target目录下; - 将war包拷贝至tomcat的 webapp目录下;
- 修改war包名称为mvc;
- 进入tomcat 的 bin 目录 双击
startup.bat
运行tomcat; - 浏览器输入 http://localhost:8080/mvc/ 跳转至 index.jsp首页,表示部署成功;
- 打开tomcat 下 webapp目录,发现有一个mvc文件夹就是war包解压而来