Spring MVC一些知识

来源:互联网 发布:gh0st 源码下载 编辑:程序博客网 时间:2024/06/05 22:47

spring mvc中一些知识

1.基本信息

spring mvc基于Spring框架、Servlet、JSP的主流的Web开发框架。

http使得Web服务器与浏览器之间可以通过互联网或内网进行数据交互。
WebSocket协议:允许一个HTTP连接升级为WebSocket协议,支持双向通信,使得服务端可以通过此
协议主动发起通客户端的会话通信。

http请求包含3部分内容
1)方法-URL-协议/版本
2)请求头信息
3)请求正文

http响应包含3部分内容
1)协议-状态码-描述
2)响应头信息
3)响应正文

Servlet是web应用的底层技术。一个JSP页面会被翻译成一个Servlet,一个Servlet应用需要运行在
一个Servlet容器中,它无法独立运行。

2、模型1、2

模型1:模型-视图形式,简单直接,但不适合大型应用
模型2:模型-视图-控制器(mvc),适合大型应用
spring mvc和struts1使用Servlet作为控制器,Structs2使用Filter作为控制器。
URI中的action代表可以执行的一个操作。

MVC框架支持编程式和声明式两种校验方法。

3.spring mvc

优势:提供了开箱即用的DispatcherServlet,无需额外开发;自动绑定用户输入,正确地转换数据类型;可以
利用spring提供的功能等等。
View Resolver视图解析器:负责解析视图。

4.基于注解方式

注解方式有点:一个控制器类可以处理多个动作;请求映射不需要存储在配置文件中。
类型:"@Controller(控制器),@RequestMapping(请求映射)"
Spring通过扫描机制找到控制类:<context:conponent-scan base-package="basePackage"/>
@RequestMapping(value="..",method="..") 映射一个请求和一种方法

请求方法返回类型:
ModelAndView、Model、Map、View、void、Callable、视图名String、DeferredResult等等;
配置文件:web.xml与 应用名-config.xml

依赖注入:使用"@Antowired"、"@Service"
<context:conponent-scan base-package="服务类所在包"/> 扫描服务类
重定向和转发:重定向需要两次请求,经过客户端;转发只需一次请求;

请求参数:... fuc(@RequestParam int val)...
路径变量:
@RequestMapping(value="/me_name/{id}")
...fuc(@PathVariable int id)...

@ModelAttribute注释方法参数和方法

5、数据绑定

将输入的数据绑定到领域模型。输入验证失败时,会重新生成一个HTML表单。
spring表单标签:<form:form/>,<form:input/>等等,会被渲染成对应的标签元素,如<form:input/>
渲染到<input/>。

6、转化器和格式化

转换器:Convert可以将一种类型转换为另一种类型。
定制Convert:实现Convert接口;给annotation-driven元素的conversion-service属性赋予
实现类bean的名字<mvc:annotation-driven conversion-service="...">

Formatter:也能将一种类型转换为另一种类型,但源类型必须是String,定制方法和Convert类似。

7、验证器

JSR 303(Java验证规范):不需要编写校验器,利用标注类型嵌入约束。
Spring mvc验证器:实现Validator,使用Errors对象(包括FieldError和ObjectError)抛出错误。

8、表达式语言

优点:编写免脚本的JSP页面。可以不适用使用任何JSP声明、表达式或者scriptlets
EL表达式以${开始,}结束:比如:${exp}
EL表达式可以返回任意类型的值。可以用[]或者.访问对象的属性。
取值规则:从左到右进行。
EL隐式对象:pageContext、initParam、param、cookie、requestScope等等
EL运算符:
算术运算符:+,-,*,/ 等等
逻辑运算符:&&,||,! 等等
关系运算符:==,>= 等等
empty运算符:${empty x}

关闭JSP页面的脚本元素:使用jsp-property-group元素和其url-pattern和scriping-invalid子元素
禁用EL计算:<%@page isELIgnored="true"%>

9.JSTL

JSP标准标签库,标签库的集合。

引入标签库:<%@ taglib uri=".." prefix=".." %>
一般行为:out、set、remove等,如<c:out .../>
条件行为:if、choose、when、otherwise等,如<c:if .../>
遍历行为:forEach,如<c:forEach .../>
与URL相关的行为:url、redirect等,如<c:url .../>
格式化行为:formatNumber、formatDate等,如:<fmt:formatDate .../>

使用函数:引入标签<%@ taglib uri=".." prefix="fn" %>
${fn:functionName},如:${fn:contains(myString,"Hello")}

10.国际化

internationalization:缩写i18n(之间有18个字母),开发多语言和数据格式的应用程序的技术,无需重写编程逻辑。
本地化:i10n,将国际化应用程序改成支持特定语句区域的技术。
具备条件:将文本文件隔离成属性文件;选择和读取正确的属性文件;
使用spring的message标签可显示本地化消息。

11.文件上传、下载

利用Commons FileUpload元件
或者利用Servlet3本地上传

12.Servlet

要将Servlet/JSP应用程序部署到Tomcat时,需要显示或隐式定义一个Tomcat上下文,每个Tomcat上下文
表示一个web应用程序。
<Context docBase="..." reloadable="true"/>
一般不通过server.xml来管理上下文,因为只有重启tomcat后,更新才会生效。

Servlet技术的核心是Servlet,它是所有Servlet类必须直接或间接实现的一个接口。
JSP页面本质是一个Servlet:优点有,不必编译JSP页面,可以用任何文本编辑器来编写。
JSP页面在JSP容器运行,一个Servlet容器通常也是JSP容器,如Tomcat就是一个Servlet/JSP容器
0 0
原创粉丝点击