SpringMVC【开发Controller】详解(一)

简介: 本文主要是讲解在Controller中的开发

前言

本文主要是讲解在Controller中的开发,主要的知识点有如下:

  • 编码过滤器
  • 使用注解开发
  • 注解@RequestMapping详解
  • 业务方法接收参数
  • 字符串转日期
  • 重定向和转发
  • 返回JSON

SpringMVC过滤编码器

在SpringMVC的控制器中,如果没有对编码进行任何的操作,那么获取到的中文数据是乱码!

微信图片_20220411232711.png

即使我们在handle()方法中,使用request对象设置编码也不行!原因也非常简单,我们SpringMVC接收参数是通过控制器中的无参构造方法,再经过handle()方法的object对象来得到具体的参数类型的

Struts2是使用拦截器来自动帮我们完成中文乱码的问题的。那么SpringMVC作为一个更加强大的框架,肯定也有对应的方法来帮我们完成中文乱码问题!

值得注意的是:该过滤编码器只能解决POST的乱码问题

我们只需要在web.xml配置文件中设置过滤编码器就行了

<!-- 编码过滤器 -->
    <filter>
        <filter-name>CharacterEncodingFilter</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>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

微信图片_20220411232717.jpg


注解开发SpringMVC

我们在快速入门的例子中使用的是XML配置的方式来使用SpringMVC的,SpringMVC也能够支持注解。【个人非常喜欢注解的方式】

我们在使用Action的时候,要么继承着AbstractCommandController类,要么显示使用注解Controller接口。当我们使用了注解以后就不用显示地继承或实现任何类了

开发流程

使用@Controller这个注解,就表明这是一个SpringMVC的控制器!

@Controller
public  class HelloAction  {
}

当然了,现在Spring是不知道有这么一个注解的,因此我们需要在配置文件中配置扫描注解

值得注意的是:在配置扫描路径的时候,后面不要加.*

不然扫描不了,我不知道学Struts2还是其他的地方时候,习惯加了.*,于是就搞了很久!

<!--扫描注解,后面不要加.*-->
    <context:component-scan base-package="zhongfucheng"/>

在控制器中写业务方法

@Controller
public class HelloAction {
    /**
     *
     * @RequestMapping 表示只要是/hello.action的请求,就交由该方法处理。当然了.action可以去掉
     * @param model 它和ModelAndView类似,它这个Model就是把数据封装到request对象中,我们就可以获取出来
     * @return 返回跳转的页面【真实路径,就不用配置视图解析器了】
     * @throws Exception
     */
    @RequestMapping(value="/hello.action")
    public String hello(Model model) throws Exception{
        System.out.println("HelloAction::hello()");
        model.addAttribute("message","你好");
        return "/index.jsp";
    }
}

跳转到index页面,首页得到对应的值。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  这是我的首页 <br>
  ${message}
  </body>
</html>

微信图片_20220411232725.png


当然了,基于注解和基于XML来开发SpringMVC,都是通过映射器、适配器和视图解析器的。  只是映射器、适配器略有不同。但是都是可以省略的!

<!-- 基于注解的映射器(可选) -->
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <!-- 基于注解的适配器(可选) -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
    <!-- 视图解析器(可选) -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

更新:上边的适配器和映射器只是Spring3.1版本之前使用的、3.1版本之后现在一般用以下的两个

映射器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
适配器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

当然了,这上面两个配置也可以使用<mvc:annotation-driven>>替代注解处理器和适配器的配置。


目录
相关文章
|
8月前
|
前端开发
SpringMVC-mvc:view-controller
SpringMVC-mvc:view-controller
27 0
|
8月前
|
前端开发 Java 应用服务中间件
SpringMVC(基于Spring 的Web 层MVC 框架)--SpingMVC 执行流程--@RequestMapping的使用
SpringMVC(基于Spring 的Web 层MVC 框架)--SpingMVC 执行流程--@RequestMapping的使用
97 0
|
Java
springMvc44-springMVC的三大组件
springMvc44-springMVC的三大组件
79 0
springMvc44-springMVC的三大组件
|
设计模式 XML 前端开发
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(上)
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(上)
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(上)
|
XML 前端开发 安全
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(下)
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(下)
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(下)
|
XML 缓存 前端开发
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(中)
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(中)
【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping(中)
|
Java Spring
SpringMVC【开发Controller】详解(三)
本文主要是讲解在Controller中的开发
163 0
SpringMVC【开发Controller】详解(三)
SpringMVC【开发Controller】详解(二)
本文主要是讲解在Controller中的开发
138 0
SpringMVC【开发Controller】详解(二)
|
SQL JSON Oracle
SpringMVC【开发Controller】详解(四)
本文主要是讲解在Controller中的开发
176 0
SpringMVC【开发Controller】详解(四)
|
JSON 前端开发 Java
Springboot 中@Controller 和 @RestController 的区别
简述 Springboot 中@Controller 和 @RestController 的区别。

热门文章

最新文章