SpringMVC

本文详细介绍了SpringMVC的配置与使用,包括创建Maven项目、配置web.xml、使用@RequestMapping、处理请求数据、POJO作为参数、配置字符编码过滤器、共享数据以及RESTful实现。还讲解了拦截器、异常处理器、文件上传下载等功能,并探讨了Thymeleaf视图解析和HttpMessageConvert报文转换器。
摘要由CSDN通过智能技术生成

SpringMVC

创建Maven包

初始化Maven添加相应依赖包
在这里插入图片描述

    <packaging>war</packaging>

    <dependencies>
        <!--springMVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.3.0-alpha16</version>
        </dependency>
        <!--ServletAPI -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--Spring5和tymeleaf整合包 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.12.RELEASE</version>
        </dependency>
    </dependencies>

创建webapp,新建文件夹webapp,设置web工程

在这里插入图片描述

更改相应路径

在这里插入图片描述

再次回到webapp的目录,出现蓝点且存在WEB-INF/web.xml则配置成功

配置web.xml

默认配置方式
 <!--配置SpringMVC的前端控制器,对浏览器的请求统一处理-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatchServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
扩展配置方式
    <!--配置SpringMVC的前端控制器,对浏览器的请求统一处理-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置位置和名称-->
        <init-param>
            <param-nam·	e>contextConfigLocation</param-name>
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <!--将前端控制器DispatchServlet的初始化时间提前到服务器启动时-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

在这里插入图片描述

创建请求控制器

在这里插入图片描述

@Controller
public class HelloController {
   
}

扫描组件

在这里插入图片描述

视图解析器

<!--视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"></property>
        <property name="characterEncoding" value="UTF-8"></property>
        <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>

404错误由tomcat版本所致

更换tomcat9下的版本

@RequestMapping

  1. value属性

    编写在类上面,相当于根目录

    编写在方法上,表示具体的路径

    @Controller
    @RequestMapping("/demo")
    public class testController {
         
        @RequestMapping("/test1")
        public String test(){
         
            return "test";
        }
        @RequestMapping("test2")
        public String test2(){
         
            return "test2";
        }
    }
    

    访问路径:test1: /demo/test1 test2:/demo/test2

    value值可以为数组 value={“/demo1”,“demo2”},表示可通过两个路径访问

    value属性必须设置值

  2. method属性

    method=RequestMethod.GET

    method=RequestMethod.POST

  3. params属性:表示请求信息中对请求参数的限制

    params={“username”,“age!=10”}:表示请求参数中必须带有username,且age!=10

  4. Ant匹配风格:

    • ?:匹配文件名中的一个字符
    • *:匹配文件名中的任意字符
    • **:匹配多层路径(/ /中间放符号)
  5. @PathVariable():可以将URL请求路径中的参数传递到处理请求方法的形参中

处理请求数据

  1. @RequestParam注解:可以把请求参数传递给请求方法

    value:参数名

    required:是否必须,默认为true

    defaultValue:默认值,没有传递参数时使用的值

  2. @RequestHeader注解(value,required,defaultvalue):绑定请求报头的属性值,服务区可通过此注解获取报头的属性值

  3. @CookieValue注解(value,required,defaultvalue):绑定请求中的Cookie值

    创建cookie:通过调用

    public String testServletAPI(HttpServletRequest request){
         
        HttpSession session=request.getSession();
        }
    

POJO作为参数

springMVC会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值

配置字符编码过滤器

web.xml配置

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

域对象共享数据

  1. 使用servletAPI向request域对象共享数据

    <a th:href="@{/testScope}">测试servletAPI获取数据域</a>
    
    @Controller
    public class testScope {
        @RequestMapping("/testScope")
        public String testScope(HttpServletRequest request){
            request.setAttribute("testScope","Hello Rush!");
            return "testScope";
        }
    }
    
  2. 使用ModelAndView向request域对象共享数据

        @RequestMapping("/testScopeByMAV")
        public ModelAndView testMAV(){
         
            ModelAndView mav=new ModelAndView();
            mav.addObject("testScope","Test ModelAndView");
            mav.setViewName("testScope");
            return mav;
        }
    
  3. 通过Model向request域对象共享数据

  4. 通过Map向request域对象共享数据

    map.put(key,value);

  5. ModelMap

    ModelMap.addAttribute();

  6. 通过servletA

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rush006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值