springmvc 0-1搭建简单工作流程

springmvc

目录

springmvc

1、SpringMVC工作流程

1.配置DispatcherServlet前端控制器

2.开发处理具体业务逻辑的Handler(@Controller @RequestMapping)

3.xml配置文件配置controller扫描,配置springMVC三大组件

4.将xml文件路径告诉springMVC(DispatcherServlet)


1、SpringMVC工作流程

需求:前端浏览器请求url:http://localhost:8080/demo/handle01,前段页面显示后台服务器的时间。

开发过程:

1.配置DispatcherServlet前端控制器

a.New Module-Maven-Create from archetype-maven-archetype-webapp

b.pom.xml中修改jdk的版本,改为1.8;

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

c.pom.xml中引入springMVC依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.12.RELEASE</version>
</dependency>

d.pom.xml中引入tomcat插件

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <port>8080</port>
        <path>/</path>
      </configuration>
    </plugin>
  </plugins>
</build>

e.在src/main下新建Directory java并且Mark Directory as Sources Root,新建Directory resources并且Mark Directory as Resources Root

2.开发处理具体业务逻辑的Handler(@Controller @RequestMapping)

a.在java下新建xxx.controller.DemoController.java

@Controller
@RequestMapping("/demo")
public class DemoController {

    /**
     * url:http://localhost:8080/demo/handle01
     */
    @RequestMapping("/handle01")
    public ModelAndView handle01() {
        Date date = new Date();// 服务器时间
        // 返回服务器时间到前端页面
        // 封装了数据和页面信息的 ModelAndView
        ModelAndView modelAndView = new ModelAndView();
        // addObject 其实是向请求域中request.setAttribute("date",date);
        modelAndView.addObject("date",date);
        // 视图信息(封装跳转的页面信息)
        modelAndView.setViewName("success");
        return modelAndView;
    }
}

b.在WEB-INF下新建jsp/success.jsp,处理界面显示

<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>
<body>
跳转成功!服务器时间:${date}
</body>
</html>

3.xml配置文件配置controller扫描,配置springMVC三大组件

在resources下新建springmvc.xml,开启controller扫描,配置视图解析器,自动注册处理器映射器、处理器适配器,配置静态资源

<?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:content="http://www.springframework.org/schema/context"
       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
">

    <!--开启controller扫描-->
    <context:component-scan base-package="xxx/controller"/>

    <!--配置springmvc的视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--
        自动注册最合适的处理器映射器,处理器适配器
    -->
    <mvc:annotation-driven/>

    <!--静态资源配置,方案一-->
    <!--
        原理:添加该标签配置后,会在springmvc上下文定义一个DefalutServletHttpRequestHandler对象,
        这个对象如同一个检查人员,对进入DispatcherServlet的url请求进行过滤筛查,如果发现是一个静态资源请求,
        那么会把该请求转由应用服务器tomcat默认的DefaultServlet来处理,如果不是静态资源请求,那么继续由SpringMVC框架来处理。
    -->
    <!--<mvc:default-servlet-handler/>-->

    <!--静态资源配置,方案二 SpringMVC框架自己处理静态资源-->
    <!--
        mapping:约定的静态资源的url规则
        location:指定的静态资源的存放位置
    -->
    <mvc:resources mapping="/resources/**" location="classpath:/"/>
    <mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>
</beans>

4.将xml文件路径告诉springMVC(DispatcherServlet)

在webapps/WEB-INF/web.xml中配置DispatcherServlet以及静态资源的拦截

<servlet>
  <servlet-name>springmvc</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>
</servlet>
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <!--
    方式1:带后缀,比如*.cation *.do *.aaa
          这个方式比较精确,方便,在以前和现在的企业中都有很大的使用比例
    方式2:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除servlet和jsp之外的js、css、png等)
         为什么配置为/ 会拦截静态资源???
              因为tomcat容器中有一个web.xml(父),你的项目中也有一个web.xml(子),是一个继承关系
                    父web.xml中有一个DefaultServlet,  url-pattern 是一个 /
                    此时我们自己的web.xml中也配置了一个 / ,覆写了父web.xml的配置
          为什么不拦截.jsp呢?
              因为父web.xml中有一个JspServlet,这个servlet拦截.jsp文件,而我们并没有覆写这个配置,
              所以springmvc此时不拦截jsp,jsp的处理交给了tomcat
          如何解决/拦截静态资源这件事?
              springmvc.xml静态资源配置两个方案。
    方式3:/* 拦截所有,包括.jsp
  -->
  <!--拦截匹配规则的url请求,进入springmvc框架处理-->
  <url-pattern>/</url-pattern>
</servlet-mapping>

配置完毕,启动Tomcat,访问http://localhost:8080/demo/handle01,成功。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值