springMVC详解(上)

1 springmvc的框架原理

1.1 b/s系统mvc原理

mvc是什么?mvc是设计模式。
这里写图片描述
1.2 springmvc是什么?
Mvc的框架,是spring框架的一个模块。
这里写图片描述
1.3 springmvc框架原理
这里写图片描述
1、 用户发起请求,请求到DispatcherServlet前端控制器
DispatcherServlet(中央调度),负责request和response,负责调用处理器映射器查找Handler,负责调用处理器适配器执行Handler,有了前端控制器降低了各各组件之间的耦合性,系统扩展性提高。
2、 DispatcherServlet前端控制器请求处理器映射器HandlerMapping查找Handler
根据用户请求的url,根据一定的规则去查找(比如:xml配置,注解)
3、 HandlerMapping处理器映射器将Handler返回给前端控制器
4、 DispatcherServlet前端控制器调用HandlerAdapter处理器适配器执行Handler
程序员编写的Handler是按照适配器要求的规则去执行Handler
5、 HandlerAdapter处理器适配器执行Handler
适配器按照一定规则去执行Handler
6、 Handler执行完成,返回ModelAndView
ModelAndView是springmvc的封装对象,将model和view封装在一起。
7、 HandlerAdapter处理器适配器将ModelAndView返回给前端 控制器
8、 前端控制器调用视图解析器,进行视图解析,解析完成给前端控制器返回View
View是springmvc的封装对象,是一个接口,实现类包括jspview,pdfview。。。。
9、 前端控制器调用view进行视图渲染
将模型数据填充到view(将model数据填充到request)响应给用户
10、前端控制器响应给用户。

小结:

一个中心:(不需要开发)
DispatcherServlet前端控制器
三个组件:(不需要开发)
处理器映射器
处理器适配器
视图解析器

Handler:(需要开发)
处理器,理解成action

View:
需要开发页面:jsp

2 Springmvc第一个程序

2.1 统一开发环境

使用eclipse-3.7-indigo 32位
Jdk:1.7.72版本(32位)
Tomcat:apache-tomcat-7.0.53
参考 :Eclipse开发环境配置-indigo.docx

2.2 第一程序开发

2.2.1 创建一个web 工程

这里写图片描述

2.2.2 加入 springmvc的jar包

这里写图片描述
Spring的版本:3.1.4

2.2.3 配置前端控制器

在web.xml中配置servlet。
指定 contextConfigLocation让前端控制器找到springmvc的全局配置文件。
这里写图片描述

2.2.4 配置三大组件

在springmvc.xml中配置:
处理器映射器:
BeanNameUrlHandlerMapping
这里写图片描述
处理器适配器:
这里写图片描述
视图解析器:
这里写图片描述

2.2.5 编写Handler

由于使用SimpleControllerHandlerAdapter适配器,要求编写的Handler实现Controller接口。
需求:向页面显示一行信息“helloworld”
这里写图片描述

2.2.6 编写jsp

这里写图片描述

2.2.7 配置Handler

由于使用处理器映射器BeanNameUrlHandlerMapping,要求在spring的容器配置Handler,Handler的name就是url。
在springmvc.xml中配置:
这里写图片描述

2.2.8 部署tomcat,启动

以debug方式运行。

访问路径:http://localhost:8080/springmvc1215_1/helloworld.action

2.3 逻辑视图名

调用:modelAndView.setViewName指定逻辑视图名,如果这里指定jsp的完整路径也支持。
在springmvc.xml中修改视图解析器:
这里写图片描述
修改action:
这里写图片描述

3 强化三大组件学习

3.1 处理器映射器

作用:根据url找到Handler.

BeanNameUrlHandlerMapping:根据url匹配bean的name 处理器映射器实现了HandlerMapping接口

SimpleUrlHandlerMapping:将url进行集中配置。

<!-- 简单url映射 -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello1.action">hello_controller</prop>
                <prop key="/hello2.action">hello_controller</prop>
            </props>
        </property>
    </bean>

hello_controller是action这个bean的id。

总结:
多个处理器映射器可以共存

3.2 处理器适配器

作用:按照一定规则去执行Handler

SimpleControllerHandlerAdapter:规则是Handler要实现Controller接口

HttpRequestHandlerAdapter:规则是Handler要实现HttpRequestHandler接口。

总结:
多个适配器可以共存!

4 命令表单控制器

编写action,继承AbstractCommandController。

运行方式类似struts的modelDriven。

将页面提交的参数封装在一个pojo对象(命令对象)中。

4.1 需求

学生信息修改、提交功能。

进入学生信息修改页面,输入信息,提交,将学生的信息提交到action中。

将页面的参数封装到一个pojo对象(命令对象)中。

4.2 开发

编写两个action类:

修改学生信息页面

修改学生信息提交

注意:
//设置命令对象
this.setCommandClass(Student.class);

4.3 问题处理

4.3.1 Post乱码

在web.xml中加入:

<filter>
<filter-name>CharacterEncodingFilter</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>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

对get乱码处理:
对于get请求中文参数出现乱码解决方法有两个:

修改tomcat配置文件添加编码与工程编码一致,如下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

另外一种方法对参数进行重新编码:

String userName new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码

4.3.2 日期型转换

//注册一个属性编辑器
    @Override
    protected void initBinder(HttpServletRequest request,
            ServletRequestDataBinder binder) throws Exception {
        //将student类中的birthday属性进行日期转换,类型和birthday一致
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
    }

4.3.3 小结

使用命令表单控制器也可以开发增、删、改、查。

使用命令表单控制器一定要指定命令对象,但是只能指定一个命令对象。

5 上午课程小结

开发springmvc程序:
第一步:配置前端控制器
在web.xml配置DispathcherServlet前端控制器
第二步:配置springmvc的全局配置文件
配置三大组件:
处理器映射器:
根据url查找 Handler
处理器适配器:
执行Handler
视图解析器:
解析出视图View,根据逻辑视图名解析出真正的视图。

第三步:按照处理器适配器规则开发Handler(action)
第四步:将Handler配置在spring容器中。
第五步:编写视图(jsp+jstl)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值