《Spring MVC奇幻漂流记:当Java遇上Web的奇妙冒险》

各位Web冒险家们,准备好进入Spring MVC的魔法世界了吗?这里没有枯燥的Servlet,只有优雅的注解和智能的控制器!让我们一起来探索这个"请求-响应"的奇幻旅程。

第一章:Web世界的"交通指挥官"

首先登场的是`web.xml`,它就像Web世界的"交通警察":

xml

<servlet>

<servlet-name>dispatcherServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

</servlet>

这个DispatcherServlet就是Spring MVC的"大脑",负责指挥所有请求的流向。它像是个忙碌的接待员,对每个HTTP请求说:"别急,我帮你找对应的控制器!"

还有字符编码过滤器,确保中文不会变成"天书":

xml

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

第二章:控制器的"百变星君"

HelloController - 简单的开场白

java

@Controller

public class HelloController {

@RequestMapping(path = "/hello.do")

public String sayHello(Model model){

model.addAttribute("msg","hello,SpringMVC");

return "suc";

}

}

这就像个热情的迎宾员:"欢迎光临!这是您的问候消息!"

UserController - 参数接收的"多面手"

这个控制器展示了三种接收参数的"武功秘籍":

java

// 方式1:直接接收参数 - "直来直去型"

@RequestMapping("/save")

public String save(String name, String password){

System.out.println(name + ":" + password);

return "suc";

}

// 方式2:对象封装 - "优雅绅士型"

@RequestMapping("/save2")

public String save2(User user){

System.out.println(user);

return "suc";

}

// 方式3:Servlet原生 - "怀旧复古型"

@RequestMapping("/save3")

public String save3(HttpServletRequest request){

String name = request.getParameter("name");

return "suc";

}

最精彩的是`index.html`表单中的"嵌套对象"传参:

html

金额:<input type="number" name="account.money"><br>

金额1:<input type="number" name="accounts[0].money"><br>

这就像在说:"我要给用户设置一个账户,还要给用户设置多个账户!"

第三章:DeptController的"魔术表演"

这个控制器简直就是Spring MVC的"魔法秀",展示了各种响应技巧:

魔术1:ModelAndView 魔术

java

@RequestMapping("/save")

public ModelAndView save(){

ModelAndView mv = new ModelAndView();

mv.addObject("msg","save success"); // 变出数据

mv.setViewName("suc"); // 指定视图

return mv;

}

魔术2:请求转发 vs 重定向

java

// 请求转发 - "内部传送"

@RequestMapping("/test2")

public void test2(HttpServletRequest request) throws Exception {

request.getRequestDispatcher("/dept/test3").forward(request,response);

}

// 重定向 - "外部跳转"

@RequestMapping("/test4")

public void test4(HttpServletResponse response) throws Exception {

response.sendRedirect("/qcby03/dept/test5");

}

请求转发就像部门内部调岗:"小张,这个任务你接着处理!"

重定向就像跳槽到新公司:"抱歉,我已经不在原部门了,请找新部门!"

魔术3:Spring MVC的优雅方式

java

// 请求转发

@RequestMapping("/test7")

public String test7(){

return "forward:/html/suc.html";

}

// 重定向

@RequestMapping("/test8")

public String test8(){

return "redirect:/html/suc.html";

}

这就像从"手动挡"升级到了"自动挡"!

第四章:JSON的"变形金刚"

最酷的功能来了------自动JSON转换:

java

@RequestMapping("/test10")

@ResponseBody

public User test10(){

User user = new User();

user.setName("test10");

user.setPassword("123456");

return user;

}

加上`@ResponseBody`注解后,Spring MVC会自动把User对象变成:

json

{"name":"test10","password":"123456"}

这就像有个贴心的翻译官,自动把Java对象"翻译"成JSON语言!

第五章:模型类的"俄罗斯套娃"

Account类 - 简单的钱袋子

java

public class Account {

private Double money;

// 省略getter/setter

}

User类 - 复杂的套娃结构

java

public class User {

private String name;

private String password;

private Account account; // 单个账户

private List<Account> accounts; // 账户列表

}

这种嵌套结构让表单传参变得很有趣:

  • name="account.money"→ 设置单个账户金额

  • name="accounts[0].money"→ 设置列表第一个账户金额

这就像在玩"套娃游戏",一层套一层!

第六章:视图解析器的"魔法镜"

springmvc.xml中的Thymeleaf配置就像一面"魔法镜":

xml

<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">

<property name="prefix" value="/html/" /> <!-- 前缀:在html文件夹找 -->

<property name="suffix" value=".html" /> <!-- 后缀:找html文件 -->

</bean>

当控制器返回"suc"时,Thymeleaf会自动找到`/html/suc.html`文件,这就像有个智能导航系统!

Spring MVC的"生存法则"

  1. 注解是王道:@Controller、@RequestMapping让代码更简洁

  2. 参数接收多样化:直接参数、对象封装、Servlet原生,任君选择

  3. 响应方式灵活:转发、重定向、JSON响应,应对各种场景

  4. 视图解析智能:Thymeleaf让页面渲染变得轻松愉快

趣闻轶事:控制器的"内心独白"

  • HelloController:"我就是个简单的问候器,别对我要求太高!"

  • UserController:"我负责用户相关操作,三种传参方式随你选!"

  • DeptController:"我是万能选手,转发、重定向、JSON样样精通!"

  • DispatcherServlet:"我才是最累的!所有请求都要经过我调度!"

结语

Spring MVC就像Web开发的"智能管家":

  • 从繁琐的Servlet中解放出来

  • 用注解代替XML配置

  • 自动处理参数绑定和类型转换

  • 支持多种视图技术

这次冒险告诉我们:Spring MVC不是框架,而是一种"生活方式"!它让Java Web开发从"苦力活"变成了"艺术活"。

🎭 程序员戏剧:在Spring MVC的世界里,每个控制器都是演员,每个请求都是一场演出,而DispatcherServlet就是那个忙碌的导演!

下次写Web应用时,记得享受Spring MVC带来的"优雅舞蹈",而不是陷入Servlet的"机械劳动"哦!

相关推荐
DokiDoki之父2 小时前
web核心—Tomcat的下载/配置/mavenweb项目创建/通过mavenweb插件运行web项目
java·前端·tomcat
渣哥2 小时前
别乱用!线程池拒绝策略选错,系统可能直接崩!
java
ChinaRainbowSea3 小时前
6. Advisor 对话拦截
java·人工智能·后端·spring·ai编程
自由的疯3 小时前
java 各个JSONObject有什么不同
java·后端·架构
龙茶清欢3 小时前
4、urbane-commerce 认证请求 DTO 设计规范
java·spring boot·spring cloud·设计规范
程序员烧烤4 小时前
【Java初学基础10】一文讲清反射
java·开发语言
长安——归故李4 小时前
【PLC程序学习】
java·c语言·javascript·c++·python·学习·php
大卫小东(Sheldon)4 小时前
如何用Java25编译Java17的项目
java