自己写的开源MVC-easyMVC分享
简介
基本风格是按照spring mvc做的,在后期会加入一些新的特性,封装成易于自己项目使用的mvc框架。
github地址:
https://github.com/tangyanbo/easymvc
功能简介:
1. 支持将客户端参数封装成对象,类型自动转换
2. 支持注解,配置controller和方法@RequestMapping
3. 方法中可以对request和response进行访问
4. 支持jstl
5. 可配置编码
6. controller方法的参数可以任意调换
7. 404报错提醒
8. restfull支持@PathVariable
快速使用入门
jar包:
在dist目录中copy easymvc.jar和依赖jar包到web项目中
在web项目中,resources目录下建立mvc-servlet.xml
<beans> <!-- 编码 --> <constant name="charsetEncoding">utf-8</constant> <!-- 扫描的目录 --> <scan base-package="com.easymvc.controller"/> </beans>
web.xml中配置:
<servlet> <servlet-name>EasymvcInitServlet</servlet-name> <display-name>EasymvcInitServlet</display-name> <load-on-startup>1</load-on-startup> <description></description> <servlet-class>com.easymvc.servlet.EasymvcInitServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EasymvcInitServlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
Controller:
@Controller //Controller注解 public class TestController { @RequestMapping(value = "/test.html") public String test(Model model,User user,HttpServletRequest request,HttpServletResponse response){ System.out.println("controller:"+user.getName()); List<User> list = new ArrayList<User>(); for(int i=0;i<2;i++){ User user1 = new User(); user1.setName("哈哈"+i); list.add(user1); } model.addAttribute("list", list); System.out.println(request); System.out.println(response); return "test"; } }
jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <style type="text/css"> div{ padding:5px; } </style> </head> <body> <div style="color: green"> <form action="test.html" method="POST"> <div> name: <input name="name" type="text"/> </div> <div> orderInfo.orderId: <input name="orderInfo.orderId" type="text"/> </div> <div> orderInfo.user.name:<input name="orderInfo.user.name" type="text"/> </div> <div> sex: <input name="sex" type="text"/> </div> <div> birthDate: <input name="birthDate" type="text"/> </div> <div> type: <input name="type" type="text"/> </div> <div> amt: <input name="amt" type="text"/> </div> <div> status: <input name="status" type="text"/> </div> <input type="submit"> </form> </div> </body> </html>
restfull支持:
@RequestMapping(value = "/test/{userId}/test3.html") public String test3(@PathVariable("userId") String userId){ System.out.println("======================="+userId); return "test"; }
作者:风过无痕-唐
出处:http://www.cnblogs.com/tangyanbo/
本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。欢迎加QQ讨论群
出处:http://www.cnblogs.com/tangyanbo/
本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。欢迎加QQ讨论群
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?