也谈Spring MVC
在说Spring MVC之前,我们先说说没有Spring MVC的时候。
1)最早的Java Web程序,我们使用Servlet来处理请求,一般来说,一个请求对应一个Servlet,比如/user/add.do,就对应某个useradd的Servlet来处理。在Servlet中,我们可以获取到HttpServletRequest(req)和HttpServletResponse(resp)两个参数。其中req可以取得请求相关的信息,然后我们处理好请求之后,将要返回的东西写进resp里面,比如要输出一个html页面,就一行行的println,非常的麻烦,像这样:
PrintWriter out = resp.getWriter();
out.println("<h1>" + message + "</h1>");
2)后来有了jsp文件,我们就把代码从Servlet搬到了jsp里面。这个时候,就不用一行行的println了,直接在普通的html页面里面加上需要动态化的代码就可以了。
同时,也出现了一种做法,也就是把业务逻辑写到Servlet,而数据展现放在jsp页面,再独立出领域模型,就成了mvc的模式,也就是模型(model)-视图(view)-控制器(controller)的缩写,这样做使得项目结构开始清晰起来。
3)每个请求都写个Servlet是很麻烦的,所以就有了只写一个Servlet,映射”/*”的做法,也就是把所有请求都映射到一个Servlet上面,这个Servlet再根据传递的参数做转发。再后来,把这个转发的配置写到一个独立的配置文件里面,也就是类似Struts这样的框架。Struts把处理请求的方法和返回的页面地址配置到一个xml里面,像这样:
<action name="Login" class="steven.actions.LoginAction">
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>
</action>
好处显而易见,不用写一堆的Servlet了,也不用自己写转发的方法了,只要按格式配置个xml就搞定。
4)后来就有了Spring MVC,除了类似Struts这样的用法外,还可以支持annotation的方式(Spring2.5后),就可以这样:
@Controller
@RequestMapping("blog")
public class BlogController { @RequestMapping("index") public String index(Map<String, Object> map) { return "blog/index"; }
}
annotation的方式,只要写那几个@的内容,比原先写到配置文件里,省事了不少呀。
也谈Spring MVC相关推荐
- 浅谈Spring MVC知识
关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:"MVC框架是什么?你说一说."其实我们都知道这个问题还需要问的, ...
- 扯谈spring mvc之WebApplicationContext的继承关系
spring mvc里的root/child WebApplicationContext的继承关系 在传统的spring mvc程序里会有两个WebApplicationContext,一个是pare ...
- 请谈一下Spring MVC的工作原理是怎样的?
请谈一下Spring MVC的工作原理是怎样的? ①客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求. ②DispatcherS ...
- spring mvc mysql配置_spring mvc配置数据库连接
ACM 配置中心实战:Spring + MyBatis + Druid + ACM 很多基于 Spring MVC 框架的 Web 开发中,Spring + MyBatis + Druid 是一个黄金 ...
- Spring MVC和Struts2
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比<Struts1和Struts2>,这篇将 ...
- requestbody接收不到参数_使用Spring MVC解析嵌套参数在三种 ContentType 下的绑定方式...
1.关于三种 Content-Type multipart/form-data 请求中既可以携带文件,又可以携带参数.其中参数以键值对的方式传递,参数之间.参数与文件之间以 content-dispo ...
- Spring MVC:测试简介
测试是软件开发中最重要的部分之一. 井井有条的测试有助于使应用程序代码保持良好状态,并且处于工作状态. 有很多不同类型的测试和方法. 在本文中,我想对基于Spring MVC的应用程序进行单元测试进行 ...
- 解读Spring MVC项目技术架构
在Java EE开发中,Spring和Spring MVC已经是标配的基础系统架构.前面已经介绍了Spring框架,在这里主要说说Spring MVC. 实际上Spring MVC是Spring框架的 ...
- jQuery中Ajax+Spring MVC实现跨域请求
项目开发中,某个可独立.也可集成的子业务模块须要向外开放相关API接口,先说下项目本身使用了jersery来实现RESTful webservice以名词形式公布API.有意思的是在实际的操作中同事却 ...
最新文章
- 如何实现搜索列表_图解:如何理解与实现散列表
- linux命令 -- su
- 拥抱开放式网络 通往下一代数据中心
- POP3口令扫描案例
- opencv findContours 报错_acrt_first_block == header
- 清空文件下的SVN控制文件
- C#LeetCode刷题之#232-用栈实现队列​​​​​​​​​​​​​​(Implement Queue using Stacks)
- 工控项目开发框架介绍
- 丹麦为NSA开绿灯 通过通信中心监控欧洲政客
- 市场的争夺-联通丢了校园投资、当当网主动发掘客户
- Python容器专题 - deque(队列)--双向队列对象
- java实现自动定位,java swing 如何自动定位尾部
- SQL2008安装教程
- hdu2122 Ice_cream’s world III(MST)
- 计算机专业轻薄本还是游戏本,十大精品笔记本电脑(高端轻薄本和高端游戏本)...
- 2016 杭州云栖大会随笔
- vue的:href和href
- FCC ID认证简介
- 机械臂规划----三次样条曲线
- 解决 git 将文本文件视为二进制文件 导致无法查看diff