SpringMVC实战:从配置到JSON处理全解析
目录
项目概述
核心配置文件解析
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
}
项目结构说明
关键知识点总结
- @Controller注解:标识一个类作为SpringMVC的控制器
- @RequestMapping注解:映射URL到控制器方法
- 请求处理方式:
- 通过HttpServletRequest获取参数
- 直接返回视图名称
- 手动处理JSON响应
- 请求妆发与重定向:
- 转发:request.getRequestDispatcher().forward()
- 重定向:response.sendRedirect()
- 视图解析:通过配置视图解析器简化试图定位