Struts_1

一、Struts的开发步骤:(手动)

1、  创建web工程,创建web.xml配置文件进行配置

2、  创建action实现类,推荐使用继承ActionSupport类的方法,该类中的execute是默认的实现方法,也可以自定义其他方法,在访问时进行动态调用。

3、  在struts.xml配置文件中对action进行配置,主要的配置项如下:

在该配置文件中的属性基本是以键值对的形式存在的

(1)      package

name属性:其他包引用该包时的key

namespace属性:会影响对该包下的action的方法路径,通常设为”/”

               extends属性:即该包继承的包名,一般继承”struts-default”

(2)      action

该配置要放在package中,是要访问的action的信息配置

Name属性:这是action的名字,可以随便起,但是要在url中要通过该名字进行访问,所以以简单为主。

Class属性:这是实现action实现类的存放路径,一般为工程中的包名.类名。

Method属性:这是设置访问action时要调用其实现类中的方法,默认都调用execute方法。

(3)      result

该配置放在action中,表示的是action实现类的return路径。

Name属性:这是action实现类中return返回页面的key,返回页面的值在result标签内部,即jsp页面的路径。

4、  创建视图页面,一般为jsp页面。

注意:在jsp页面中定义表单要提交到某个action时,表单属性的设置:

(1)      action属性:这是表单要访问的action名字,当要访问的action调用其实现类中的默认方法时,action的值为“action名.action”,其中action名就是在struts配置文件中action中name属性的值;如果要访问的action调用的不是其实现类中的默认方法,则需要根据动态调用方法的通配符设置添加适当的方法名称。

(2)      method属性:这个默认为post,因为如果是get的话,会将提交的内容,如用户名和密码显示在浏览器的url中。

5、  访问相应的action或jsp页面进行测试。

二、接受用户输入的三种方式

1、  通过action属性接受:如同获取提交用户名和密码并在客户端输出

(1)      创建提交数据页面(如登陆界面login.jsp)

(2)      创建action的实现类继承ActionSpport父类

(3)      在该实现类中创建提交数据对应的属性即相应的get和set方法,同时创建访问action时的接受方法,在该方法中通过this.getUsenamer()获取。

2、  通过领域对象接受

(1)      将接受的属性用一个类封装起来。提供所有属性的get,set方法以及无参构造函数。

(2)      创建action实现类继承ActionSpport父类,该类中添加被封装的对象,并提供该对象的set和get方法。

(3)      在提交的表单元素中使用对象名.属性名设置name的值。

(4)      在访问的action方法中获取该对象,就可以获取到该对象的属性值,即用户提交的数据。

注意:在这种方法中可以使用hibernate事项将接受到的数据添加到数据库中。

方法:将前面封装的对象通过hibernate的配置文件映射到数据库中,在action的实现类中创建一个添加接受到信息的方法,该方法的目的是通过hibernate向数据库中添加获取的数据,然后在访问action时调用的方法中调用该方法,通过传参数的方法实现添加数据。

3、  通过模型驱动接受

(1)      同样将接受的属性用一个类封装起来。提供get和set方法以及无参构造函数。

(2)      创建action类,实现ModelDriven接口(泛型),并重写里面的getModel()方法。

(3)      在该类中实例化刚才封装的对象,在重写的方法getModel()中返回该对象。

(4)      其他的操作跟通过领域接受的操作一样,只是在提交的页面表单元素使用属性设置name的值

三、struts访问servlet API的方法:

1、  通过第一种解耦的方式:

(1)      获取上下文对象ActionContext

(2)      通过上下文对象ActionContext对象获取httpservletrequest、httpsession、servletcontext(httpapplication)对象的封装集合map

(3)      用三种对象的get方法就可以获得相应的请求。

2、  通过第二种解耦的方式:

(1)      实现ApplicationAware、RequestAware、SessionAware接口,并重写未实现的set方法。

(2)      可直接获取封装对象的Map集合

(3)      在重写的方法中调用相应的Map集合。

3、  通过第一种耦合的方式:

(1)使用ServletActionContext类的静态方法getRequest()方法获取httpservletrequest对象

(2)使用获取的request对象获取httpsession对象

(3)使用ServletActionContext类的静态方法getServletContext()方法获取servletcontext对象,即application对象。

然后它们的使用方法就和servlet中的三种对象的使用方法是完全一样的,即实现了耦合。

还有第二种和第三种耦合方式,因为一般情况下推荐使用解耦的方式,所以就不多介绍另外两种耦合方式,一旦使用到耦合方式,则第一种已经足够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值