首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)

2012-10-07 
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发(3/3)????????进入我们基于Annotation的Strut

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发(3/3)

????????进入我们基于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注册页的部分代码如下:

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????<s:form?action="register">
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<s:textfield?name="username"/>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<s:password?name="password"/>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<s:submit?value="注册"/>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????</s:form>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????<s:fielderror></s:fielderror>


????????success.jsp注册成功页部分代码如下:??

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)注册成功!你好,<s:property?value="username"/>!


????????好,来开发我们的控制层吧。写个RegisterAction.java的类:

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)package?com.rong.action;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?javax.annotation.Resource;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?org.apache.struts2.config.ParentPackage;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?org.apache.struts2.config.Result;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?org.apache.struts2.config.Results;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?org.springframework.context.annotation.Scope;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?org.springframework.stereotype.Controller;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?com.opensymphony.xwork2.ActionSupport;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?com.rong.entity.User;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)import?com.rong.service.UserService;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)@Controller????@Scope("prototype")????????//声明此类为控制层的类,且为prototype模式调用
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)@ParentPackage(value="struts-default")
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)@Results(基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????@Result(name="success",value="success.jsp"),
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????@Result(name="input",value="register.jsp")
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)})
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)public?class?RegisterAction?extends?ActionSupport?基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????@Resource(name="userService")
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????private?UserService?userService;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????private?String?username;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????private?String?password;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????@Override
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????public?String?execute()?throws?Exception?基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????User?user?=?new?User();
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????user.setUsername("rongxinhua");
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????user.setPassword("blogjava");
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????userService.save(user);
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????return?SUCCESS;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????}
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????public?String?getUsername()?基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????return?username;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????}
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????@RequiredStringValidator(message?=?"请输入用户名!")
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????public?void?setUsername(String?username)?基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????this.username?=?username;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????}
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????public?String?getPassword()?基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????return?password;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????}
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????@RequiredStringValidator(message?=?"请输入密码!")
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????public?void?setPassword(String?password)?基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3){
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????this.password?=?password;
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????}
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)}
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)


????????Spring2.5通过@Controller?@Scope("prototype")?这样的注解,将Struts的Action纳为自己的控制范围之内。Struts2.0自带的@ParentPackage和@Results等注解,注明了要继承的父包和响应结果。还有@RequiredStringValidator,@RequiredFieldValidator等注解,大大方便了我们处理表单信息的校验。大家有没有发觉少了什么?我们不需要Struts.xml的配置文件了,也不需要xxx-validation.xml,也不需要写烦杂的验证代码了。岂不是很方便吗?
????????不过,不要忘记了,我们还得在web.xml中配置Struts2:

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????<!--?配置Struts?2.0?-->
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????<filter>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<filter-name>struts2</filter-name>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<init-param>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????????<param-name>actionPackages</param-name>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????????<param-value>com.rong.action</param-value>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????</init-param>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????</filter>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????<filter-mapping>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<filter-name>struts2</filter-name>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????<url-pattern>/*</url-pattern>
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????</filter-mapping>

????????我们init了一个参数actionPackages,表示我们的请求到哪里寻找我们的action。举例说,我们的用户注册action="register",它默认会在com.rong.action包下寻找RegisterAction类。经过action的处理后,若返回success,则会跳到success.jsp,若校验不通过,则返回input,则请求转发回register.jsp。
????????好了,看看运行效果吧!
????????基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)????????基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5调整开发(3/3)
????????成功啦!我们基于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谢谢! (*^-^*)

1 楼 请输入用户名 2011-01-22   要是早点找到就好了,自己除了struts 都配好了。。。

热点排行