进入我们基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发的最后一个阶段 了,这阶段主要为我们的项目引进Struts2的Annotation。相对于带Annotation的Hibernate与带Annotation的 Spring整合来说,带Annotation的Struts与带Annotation的Spring整合还是比较容易实现的。
我们先来引进Struts2.0的相关jar包:xwork- 2.0.5.jar,struts2-core-2.0.11.2.jar,ognl-2.6.11.jar,commons- logging.jar(这个前面已引进),freemarker-2.3.8.jar, 还有Struts2.0与Spring整 合所需的struts2-spring-plugin-2.0.11.2.jar 。 好,马上来开发我们的用户注册小例子。
register.jsp注册页的部分代码如下:
<
s:form
action
="register"
>
<
s:textfield
name
="username"
/>
<
s:password
name
="password"
/>
<
s:submit
value
="注册"
/>
</
s:form
>
<
s:fielderror
></
s:fielderror
>
success.jsp注册成功页部分代码如下:
注册成功!你好,
<
s:property
value
="username"
/>
!
好,来开发我们的控制层吧。写个RegisterAction.java的类:
package
com.rong.action;
import
javax.annotation.Resource;
import
org.apache.struts2.config.ParentPackage;
import
org.apache.struts2.config.Result;
import
org.apache.struts2.config.Results;
import
org.springframework.context.annotation.Scope;
import
org.springframework.stereotype.Controller;
import
com.opensymphony.xwork2.ActionSupport;
import
com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import
com.rong.entity.User;
import
com.rong.service.UserService;
@Controller @Scope(
"
prototype
"
)
//
声明此类为控制层的类,且为prototype模式调用
@ParentPackage(value
=
"
struts-default
"
)
@Results(
{
@Result(name = " success " ,value = " success.jsp " ),
@Result(name = " input " ,value = " register.jsp " )
}
)
public
class
RegisterAction
extends
ActionSupport
{
@Resource(name = " userService " )
private UserService userService;
private String username;
private String password;
@Override
public String execute() throws Exception
{
User user = new User();
user.setUsername( " rongxinhua " );
user.setPassword( " blogjava " );
userService.save(user);
return SUCCESS;
} 

public String getUsername()
{
return username;
} 
@RequiredStringValidator(message = " 请 输入用户名! " )
public void setUsername(String username)
{
this .username = username;
} 

public String getPassword()
{
return password;
} 
@RequiredStringValidator(message = " 请 输入密码! " )
public void setPassword(String password)
{
this .password = password;
} 
}
Spring2.5通过@Controller @Scope("prototype") 这样的注解,将Struts的Action纳 为自己的控制范围之内。Struts2.0自带的@ParentPackage和@Results等注解,注明了要继承的父包和响应结果。还有 @RequiredStringValidator,@RequiredFieldValidator等注解,大大方便了我们处理表单信息的校验。大家有 没有发觉少了什么?我们不需要Struts.xml的配置文件了,也不需要xxx-validation.xml,也不需要写烦杂的验证代码了。岂不是很 方便吗?
不过,不要忘记了,我们还得在web.xml中配置Struts2:
<!--
配置Struts 2.0
-->
<
filter
>
<
filter-name
>
struts2
</
filter-name
>
<
filter-class
>
org.apache.struts2.dispatcher.FilterDispatcher
</
filter-class
>
<
init-param
>
<
param-name
>
actionPackages
</
param-name
>
<
param-value
>
com.rong.action
</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
struts2
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
我们init了一个参数actionPackages,表示我们的请求到哪里寻找我们的action。举例说,我们的用户注册 action="register",它默认会在com.rong.action包下寻找RegisterAction类。经过action的处理后,若 返回success,则会跳到success.jsp,若校验不通过,则返回input,则请求转发回register.jsp。
好了,看看运行效果吧!

成功啦!我们基于Annotation的SSH整合开发终于完成了。我所介绍的Annotation注解其实并不多,还得靠大家找资料去 学习。而我们侧重点是在用Annotation时三大框架是如何整合起来的。
说点题外话吧,我们在开发过程中,究竟用Annotation还是XML,许多人曾问这样的问题。有培训机构的老师说过一句 话,Annotation可以用,但XML配置一定要懂,因为XML配置现在还是主流。他说得也挺有道理的。有些人可能还不能接受Annotation这 东西,就像我当初不大喜欢它一样。我的一位教我们Java中间件的老教师说:“Struts,Spring,Hibernate算什么技术?学EJB才是 有用的。”他教我们的好像是EJB2版本的,他年轻时用Jbuilder开发过EJB的项目。如果我问他“为什么不选EJB3.0”,他会不会 说:“EJB3被改得一塌糊涂,什么注解啊,改得狗屁不通,还是EJB2的最好……”。当然,我没有再问他。有时候,新事物要被人们所接受,是要经历一段 时间的,世界在变,知识在变,我们何不用更宽广的心态,去接受那些新生的事物?
(*^-^*) 本文原创,转载请注明出处, http://www.blogjava.net/rongxh7 谢 谢! (*^-^*)
本文介绍了一个基于Struts2.0、Hibernate3.3和Spring2.5的项目整合过程,重点讲解了如何利用注解简化配置,并实现了用户注册功能。
496

被折叠的 条评论
为什么被折叠?



