阅读 93

pringMVC入门到搭建

一 前言

​ 本篇内容主要是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工作流程

  1. 用户发起的所有请求都会到达前端控制器 (DispatcherServlet);
  2. 前端控制器会查询合适的处理映射器(handler mapping);
  3. 处理映射器就会根据用户提交的RUL信息 筛选合适的 控制器(controller);
  4. 此时,前端控制器才会将用户的提交的信息 发送给控制器处理数据;数据处理完成后才会产生数据模型(Model)和视图名称,返回给前端控制器;
  5. 前端控制器将根据视图名称通过 视图解析器(view resolver)匹配适合的视图;
  6. 前端控制器会将数据模型交给视图;
  7. 视图将数据渲染,响应给客户端;

三 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 官网 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包解压而来

关注知识追寻者:

tLeP2D.png