ssh和ssh1的区别

这几天的时间,把新闻管理系统用ssh和ssh2整了一遍。想写一点对这两者的看法。

ssh在昨天已经写过了。先把ssh2的流程说一下吧。

在web.xml里面配置struts2.0用filter代码如下:

    

中间的<param-name>struts.i18n.encoding</param-name><param-value>GB18030</param-value>这个是设置他的编码。。

 

写的路径也有点不同。。原先在struts1.2中路径一般都以.do结尾的,而struts2.0中是以.action结尾的。并且参数是写在"."之前,以"!"打头,举个例子:UserAction!login.action

路径是跳到struts.xml里面去。。在struts.xml里面有个package的属性,可以用它来控制权限。

<action name="UserAction" class="springUserAction">

这个name必须和发过来的请求相对应,而class是跳到spring的配置文件里面去,由它帮忙注入serice层。。

spring的配置文件和ssh的几乎相同,可以增加一层model层,由spring来负责new出model,当然还得重写一下scope,在上篇文章中有提到。

action层的类,不再是继承DispatchAction的类,而是继承ActionSupport,再重写它的方法,为了需要,可以把相应的代码给修改掉。。

例如在jsp层传过来的参数是save,代码如下:

 

在struts.xml的路径是这样的:

 <result name="">/xx.jsp</result>

 

在action那个类里面还有一个问题,原先的request没有了。。那么该怎样获得呢?代码如下,它是通过上下文来取得的

 

 

另外说一下struts2.0的标签,我就用到了三个:一个是 <s:iterator>,一个是<s:property>,最后一个是<s:if>

 

第一个是用来迭代的,用法如下:

 <s:iterator id="news" value="#request.newslist">

这个id就是用来标识的,和c标签的用法相同,后面的value值是表示用数据库里面拿过来的newslist,后台的代码是这样的

request.setAttribute("newslist", list);

关于这个“#”号,大家可以理解成"${}",看到这个EL标签,应该很熟悉了吧,呵呵。。

 

第二个是用来输出值:

可配合迭代使用,当然其他地方也一样的。。

接上的:<s:property value="#news.id"/>

 

第三个是可以用来做一些逻辑判断。。

和java中的if 、elseif、else用法差不多。。大家可以去尝试一下。。

 

整合完ssh2,我的感觉是确实要比struts1.X简单,至少少写了一个form层,本来这个form层是和struts打交道的,model和hibernate打交道,现在就只剩下model层了。。

但是有一点要注意的是:在jsp页面上,form里面的name声明必须是serice层所声明的对象的来点出它的属性值。。

举个例子吧,在User类里面有一个username,password

本来写一个<input type="text" name="username">

可是struts2.0里面就不允许这样写,除非你在serice层声明的是这样的

一般来说,在serivce层类的属性都是用对象声明的。。即User user;

这样写的话,前台的name必须要写成name="user.username",不然它取不到这个值。。当然要对上面的user做get、set方法。。其实get方法是没必要的,因为它是通过set方法的,这样写也是一种代码的规范性吧。

另外,我觉得struts不管是1.2还是2.0,他们的标签都很强大,2.0的似乎更好一些,呵呵。。。

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值