SpringMVC实战:从配置到JSON处理全解析

发布于:2025-07-01 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

项目概述

核心配置文件解析

web.xml配置

springmvc.xml配置

控制器详解

基本控制器示例

请求处理方式

获取请求参数

返回JSON数据

请求转发

重定向

视图解析与页面跳转

项目结构说明

关键知识点总结


项目概述

这是一个基于SpringMVC的Web应用示例,展示了如何配置SpringMVC环境、创建控制器以及处理不同类型的请求和响应。项目包含了以下核心功能:

  • 基本页面跳转
  • 请求参数处理
  • JSON数据返回
  • 请求转发与重定向

核心配置文件解析

web.xml配置

<web-app>
    <!-- 字符编码过滤器 -->
    <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>
    </filter>
    
    <!-- 前端控制器配置 -->
    <servlet>
        <servlet-name>dispatcherServlet</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>
        <load-on-startup>1</load-on-startup>
    </servlet>
</web-app>

关键点:

  • 配置了字符编码过滤器,统一处理请求和响应的编码为UTF-8
  • 配置了SpringMVC的前端控制器DispatcherServlet
  • 指定了SpringMVC配置文件的位置(classpath:springmvc.xml)

springmvc.xml配置

<beans>
    <!-- 组件扫描 -->
    <context:component-scan base-package="com.qcby"/>
    
    <!-- 注解驱动 -->
    <mvc:annotation-driven/>
    
    <!-- 视图解析器配置 -->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="templateEngine" ref="templateEngine"/>
    </bean>
    
    <!-- JSON视图支持 -->
    <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
</beans>

关键点:

  • 配置了组件扫描,自动注册带有@Controller注解的类
  • 启用注解驱动,简化配置
  • 配置了Thymeleaf视图解析器
  • 添加了JSON视图支持

控制器详解

基本控制器示例

@Controller
public class HelloController {
    @RequestMapping("/toIndex")
    public String toIndex(){
        return "index"; // 返回视图名称
    }
}

请求处理方式

获取请求参数

@RequestMapping(value = "/save", method = RequestMethod.GET)
public void save(HttpServletRequest request, HttpServletResponse response){
    String name = request.getParameter("name");
    String password = request.getParameter("password");
    System.out.println("name="+name+" password="+password);
}

返回JSON数据

@RequestMapping(value = "/save1", method = RequestMethod.GET)
public void save1(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String name = request.getParameter("name");
    String password = request.getParameter("password");
    String json = "{\"name\":\""+name+"\",\"password\":\""+password+"\"}";
    response.setContentType("application/json;charset=utf-8");
    response.getWriter().append(json);
}

请求转发

@RequestMapping(value = "/save2", method = RequestMethod.GET)
public void save2(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException {
    request.getRequestDispatcher("/suc").forward(request,response);
}

重定向

@RequestMapping(value = "/save3", method = RequestMethod.GET)
public void save3(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException {
    response.sendRedirect("html/suc.html");
}

视图解析与页面跳转

项目配置了Thymeleaf视图解析器,默认查找/html/目录下的.html文件:

<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="/html/" />
    <property name="suffix" value=".html" />
</bean>

控制器返回视图名称时,会自动拼接前缀和后缀:

@RequestMapping("/suc")
public String suc(){
    return "suc"; // 实际查找 /html/suc.html
}

项目结构说明

关键知识点总结

  1. @Controller注解:标识一个类作为SpringMVC的控制器
  2. @RequestMapping注解:映射URL到控制器方法
  3. 请求处理方式:
    1. 通过HttpServletRequest获取参数
    2. 直接返回视图名称
    3. 手动处理JSON响应
  4. 请求妆发与重定向:
    1. 转发:request.getRequestDispatcher().forward()
    2. 重定向:response.sendRedirect()
  5. 视图解析:通过配置视图解析器简化试图定位

网站公告

今日签到

点亮在社区的每一天
去签到