当前位置: 首页 > news >正文

深入解析:【Spring MVC终极指南】一文掌握请求处理与响应!从Servlet原生方式到SpringMVC高效优雅写法

深入解析:【Spring MVC终极指南】一文掌握请求处理与响应!从Servlet原生方式到SpringMVC高效优雅写法

一、环境准备

首先,我们有一个基本的Spring MVC控制器类DeptController,它包含了多种请求处理方式:

package com.qcby.controller;
import com.qcby.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Controller
@RequestMapping("dept")
public class DeptController {
// 多种请求处理方式将在下面详细展开
}

二、ModelAndView方式

//方式1
@RequestMapping("/save")
public ModelAndView save(){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","save success");
mv.setViewName("suc");
return mv;
}

特点:​

  • 传统的Spring MVC方式
  • 可以同时设置视图名称和模型数据
  • 适合需要向视图传递数据的场景

三、原生Servlet API方式

1. 直接响应JSON数据

//servlet
@RequestMapping("/test1")
public void test1(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/json;charset=utf-8");
String json = "{\"id\":1,\"name\":\"test1\"}";
response.getWriter().write(json);
}

2. 请求转发

//请求转发
@RequestMapping("/test2")
public void test2(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
System.out.println("test2");
String name = request.getParameter("name");
System.out.println(name);
request.setAttribute("password","123456");
request.getRequestDispatcher("/html/suc.html").forward(request,response);
}
@RequestMapping("/test3")
public void test3(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("test3");
String name = request.getParameter("name");
String password = (String)request.getAttribute("password");
System.out.println(name);
System.out.println(password);
}

3. 重定向

//重定向
@RequestMapping("/test4")
public void test4(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("test4");
response.sendRedirect("/qcby03/html/suc.html");
}
@RequestMapping("/test5")
public void test5(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("test5");
}

原生方式特点:​

  • 直接使用Servlet API
  • 灵活性高,但代码较为繁琐
  • 需要手动处理请求/响应对象

四、Spring MVC高级方式

1. 普通视图返回

//普通返回
@RequestMapping("/test6")
public String test6(){
return "/html/suc.html";
}

2. 请求转发(Spring MVC风格)

//请求转发
@RequestMapping("/test7")
public String test7(){
return "forward:/html/suc.html";
}

3. 重定向(Spring MVC风格)

//重定向
@RequestMapping("/test8")
public String test8(){
return "redirect:/html/suc.html";
}

Spring MVC方式特点:​

  • 代码简洁,易于维护
  • 充分利用Spring MVC的特性
  • 推荐使用的方式

五、JSON响应处理

1. 手动构建JSON响应

@RequestMapping("/test9")
@ResponseBody
public String test9(){
String json = "{\"id\":1,\"name\":\"test1\"}";
return json;
}

2. 对象自动转换为JSON

@RequestMapping("/test10")
@ResponseBody
public User test10(){
User user = new User();
user.setName("test10");
user.setPassword("123456");
return user;
}

JSON响应特点:​

  • @ResponseBody注解将返回值直接写入响应体
  • Spring MVC自动处理对象到JSON的转换
  • 需要配置相应的消息转换器(如Jackson)

六、对比总结

方式

优点

缺点

适用场景

ModelAndView

灵活,可传数据

代码稍显繁琐

传统Spring MVC项目

原生Servlet API

灵活性极高

代码繁琐,耦合度高

需要精细控制请求响应的场景

Spring MVC简化方式

代码简洁,优雅

功能相对受限

大多数Spring MVC项目

@ResponseBody

JSON处理方便

需要配置转换器

RESTful API开发

七、最佳实践建议

  1. 优先使用Spring MVC方式​:代码更简洁,更易于维护
  2. RESTful API使用@ResponseBody​:结合@RestController注解更佳
  3. 避免过度使用原生Servlet API​:除非有特殊需求,否则尽量使用Spring MVC提供的高级特性
  4. 保持一致性​:在项目中保持统一的风格

结语

通过本文的学习,相信大家对Spring MVC的各种请求处理方式有了更深入的理解。从原生Servlet API到Spring MVC的高级特性,我们可以看到框架的演进带来的便利性。

记住:选择合适的处理方式,可以让你的代码更加优雅和高效!​

http://www.sczhlp.com/news/182549/

相关文章:

  • foobar2000 v2.25.2 汉化版
  • Java环境安装备忘录
  • 什么是网站镜像淘宝哪些做网站关键词排名的有用吗
  • 做信息网站怎么样无锡网站建设推广服务
  • 织梦 网站地图怎么做网站的点击率
  • 昭通网站建设公司赣州51人才网
  • 建筑官方网站出口网站平台
  • 西宁建设工程官方网站wordpress woocommerce 主题
  • 网站建设属于什么经营类型开发一个简单的系统
  • 中国化工网官网 网站建设上海网站建设开发
  • cms建站系统青岛企业建站程序
  • 域名证书查询网站克拉玛依商城网站建设平台
  • 怎么在传奇网站上做宣传网站做项目
  • 网站建设 发短信文案网页设计与网站建设作品
  • 佛山企业制作网站小程序优点
  • 推销网站建设宁波创世纪网络科技有限公司
  • 公主岭市住房和城乡建设局网站wordpress 视频幻灯片
  • 汽车零部件公司网站建设方案wordpress p3
  • 城镇建设周刊网站徐州低价seo
  • 网站中怎么做图片的变换桂林网页
  • 一流的网站建设公司珠海北京网站建设
  • wordpress大学教程新站整站排名优化火速公司
  • 做翻糖的网站wordpress单页面博客
  • 国外做ui的网站j在线设计网站源码
  • 深圳建设局招标网站网站页面怎么优化
  • 湘潭网站建设 沟通磐石网络玉田县建设工程招标网站
  • 网站开发设计培训建设网站需要什么设备
  • 英语不行如何编程做网站深圳网站设计教程
  • 网站建设 主机托管wordpress 增加用户字段
  • 江西做网站哪家好秦皇岛建设网