1> MVC是一种编程思想,人为的将系统分为三个层次。
2> MVC的好处:解耦合。提高系统的可维护性和可拓展性。
M(Model) | V(View) | C(Controller) |
---|---|---|
数据模型层:entity/dao/service/ | 视图层:jsp、html、(freeMarker/VO) | 控制层:servlet、struts2、springMVC |
1.解决的问题:框架解决的是开发过程中的通用问题。
2.好处:提高开发效率。
1.充当了MVC中的控制器、替换了servlet底层 、封装了servlet相关的API、但是不是servlet
2、servlet充当控制器存在的问题:
|--代码冗余
|--数据类型转换麻烦(客户端请求数据库采用的HTTP协议传输的是String)
|--字符集编码格式
|--跳转“硬编码”
1.获得struts2框架
1.1可以到 www.apache.org 官网下载//struts2主要借鉴了webWork中的很多核心。
2.struts2的官方目录
3.搭建开发环境
3.1导入jar包
3.2 做初始化配置—开启struts2框架
在web,xml里面配置
3.3 引入配置文件
struts.xml放在src下
4.ServletActionContext工具类【重点】
作用:通过ServletActionContext可以拿到一些servlet原生API对象;
request: HttpServletRequest request = ServletActionContext.getRequest();
response: HttpServletResponse response = ServletActionContext.getResponse();
5.在myeclipse中引入 struts配置文件的智能提示
Windowspreferences输入xml
6.struts中的跳转【重点】
同一个package下的跳转
|--Action—jsp跳转:【重点】
forward:(默认<缺省>)
<result name="success" type="dispatcher">/jsp/success.jsp</result>
redirect:
<result name="success" type="redirect">/jsp/success.jsp</result>
Action—Action跳转
forward:
redirect:
7.package的作用
1>.在实际开发过程中对action进行分类管理。
2>.每一个package标签都有一个 namespace属性,主要作用就是从 访问路径上 来区分不同package下的 action. namespace的属性值 是某一个action访问路径的一部分 必须以 / 开头。
注意:namespace 默认值 是 / ,同一个struts.xml中 有一个namespace的默认形式。
8.跨包(package)跳转
跨包跳转只有action-action跳转
9.全局跳转
全局跳转 解决的问题是result标签的 跳转路径冗余
注意:全局跳转的标签必须配置在所有action标签之前
全局跳转只在本包内有效
当全局跳转和局部跳转冲突时候,会以局部跳转优先;
/error.jsp
### 五.struts2中收集客户端参数【**重点**】
```java
1.struts2是通过成员变量的方式收集客户端参数
2.要求:将成员变量的名字 与 客户端提交数据的 name属性的值 保持一致,并且提供set/get方法。
3.Struts2收参的好处
3.1 接收零散数据方式
1)我们只需要定义成员变量 定义成我们想要的类型,struts2就会自动的为我们转换,不 需要手动处理。
注意:struts2 为我们提供的默认编码格式是 UTF-8
接收日期类型数据的时候,客户端输入的必须是以 yyyy-MM-dd 格式。
3.2接收对象类型的数据
1)封装好一个实体类
2)在action中声明一个成员变量(实体类类型)--表单中的name属性指定:成员变量的 名字.实体属性的名字。
3.3接收数组类型 或 集合类型
1.作用:将多个action中冗余的代码,提取到拦截器中,一次定义,多次使用。
2.实现一个拦截器
2.1 定义一个类 实现Interceptor接口
核心实现intercept 方法
2.2 配置拦截器—struts.xml
2.3对拦截器的相关事宜
2.4可以中断请求
2.5拦截器栈(针对于配置文件优化)
注意:一旦自定义拦截器(拦截器栈) 加入,原有的系统拦截器会失效。
在struts-default.xml中 有一个系统默认提供的拦截器 叫params,这个拦截器主要就是负责收集客户端参数。
Params拦截器里面做的事情【了解】:
方法级别拦截器:
1)实现一个方法拦截器
继承MethodFilterInterceptor
2)配置struts.xml
3)文件的上传
1.客户端浏览器(form表单) 如何处理
2.action中如何接收上传的文件
3.如何将上传的文件保存到服务器的某个位置
剖析点1: text/css text/html MIME类型
Image/jpg image/png
前台编码:
后台编码:
4)文件下载
1.在服务器上准备好 要下载的文件
2.编写action:
需要我们提供一个InputStream—将要下载的文件 读入程序。
5)验证码
1.为什么需要验证码?
1.1判断是否是 一真实个人在操作
2.如何实现一个验证码?
2.1 生成一个随机数