06 struts2

struts2

一.什么是MVC(Model/View/Controller)?

1> MVC是一种编程思想,人为的将系统分为三个层次。
2> MVC的好处:解耦合。提高系统的可维护性和可拓展性。
M(Model) V(View) C(Controller)
数据模型层:entity/dao/service/ 视图层:jsp、html、(freeMarker/VO) 控制层:servlet、struts2、springMVC

二.框架的概念

1.解决的问题:框架解决的是开发过程中的通用问题。
2.好处:提高开发效率。

三.struts2 框架

1.充当了MVC中的控制器、替换了servlet底层 、封装了servlet相关的API、但是不是servlet
2、servlet充当控制器存在的问题:
	|--代码冗余
	|--数据类型转换麻烦(客户端请求数据库采用的HTTP协议传输的是String)
	|--字符集编码格式
	|--跳转“硬编码”

06 struts2_第1张图片

四.使用Struts2开发

1.获得struts2框架
	1.1可以到 www.apache.org 官网下载//struts2主要借鉴了webWork中的很多核心。 
2.struts2的官方目录

06 struts2_第2张图片

 3.搭建开发环境
       3.1导入jar包

06 struts2_第3张图片

3.2 做初始化配置—开启struts2框架
          在web,xml里面配置

06 struts2_第4张图片

  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

06 struts2_第5张图片
06 struts2_第6张图片



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:

06 struts2_第7张图片

06 struts2_第8张图片

redirect:

7.package的作用
1>.在实际开发过程中对action进行分类管理。
2>.每一个package标签都有一个 namespace属性,主要作用就是从 访问路径上 来区分不同package下的 action. namespace的属性值 是某一个action访问路径的一部分 必须以 / 开头。
注意:namespace 默认值 是 / ,同一个struts.xml中 有一个namespace的默认形式。

8.跨包(package)跳转

跨包跳转只有action-action跳转

06 struts2_第9张图片
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接收数组类型 或 集合类型

六.拦截器–interceptor

1.作用:将多个action中冗余的代码,提取到拦截器中,一次定义,多次使用。
2.实现一个拦截器
	2.1 定义一个类 实现Interceptor接口
	核心实现intercept 方法
     

06 struts2_第10张图片

	2.2 配置拦截器—struts.xml

06 struts2_第11张图片

	 2.3对拦截器的相关事宜
	 2.4可以中断请求

06 struts2_第12张图片

	2.5拦截器栈(针对于配置文件优化)

06 struts2_第13张图片

	注意:一旦自定义拦截器(拦截器栈) 加入,原有的系统拦截器会失效。
 	在struts-default.xml中 有一个系统默认提供的拦截器 叫params,这个拦截器主要就是负责收集客户端参数。

 	Params拦截器里面做的事情【了解】:

在这里插入图片描述
06 struts2_第14张图片

方法级别拦截器:
	1)实现一个方法拦截器
  	继承MethodFilterInterceptor

06 struts2_第15张图片

	2)配置struts.xml

06 struts2_第16张图片

	3)文件的上传
      	1.客户端浏览器(form表单) 如何处理
      	2.action中如何接收上传的文件
      	3.如何将上传的文件保存到服务器的某个位置
      
       	剖析点1: text/css text/html MIME类型
                  Image/jpg image/png
 前台编码:

06 struts2_第17张图片

 后台编码:  

06 struts2_第18张图片

	4)文件下载 
		1.在服务器上准备好 要下载的文件
        2.编写action:
         需要我们提供一个InputStream—将要下载的文件 读入程序。

06 struts2_第19张图片
06 struts2_第20张图片

	5)验证码
		1.为什么需要验证码?
 			1.1判断是否是 一真实个人在操作
		2.如何实现一个验证码?
   			2.1 生成一个随机数

你可能感兴趣的:(javaweb)