你好,游客 登录 注册 搜索
背景:
阅读新闻

MyEclipse10 开发 SSH2(Struts2.1+Spring+Hibernate)

[日期:2012-07-10] 来源:Linux社区  作者:zhdjbabygo [字体: ]

1. 开发环境

本文开发环境为 MyEclipse10 和 Struts 2.1,Spring 和 Hibernate 使用 MyEclipse 内置的版本。

2. 建立 Web 工程并添加 Struts 支持

File新建一个Web Project,命名为NeuqStudent,javaEE默认5.0版本,右键工程名-->Add Struts Capabilities...选择Struts2.1,下面是过滤器的名字和URL。

在系统中加入 Struts 支持,实际上就是要在系统中增加一个 Struts“过滤器(filter)”;所有的文件,在以页面形式展示 到用户的浏览器之前,先要通过该过滤器“过滤”(即处理)一遍,这样给了 Struts 控制模块一个处理页面中特有的 Struts 标签的机会;也就是说,后台程序可以将这些 Struts 标签“翻译”成为相关的数据并处理后,才将生成的页面提交给 终端用户。

也可之后在系统中添加Struts “过滤器”,方法是设置系统的全局配置文件 web.xml ;该文件在工程的树形结构中位于 WebRoot/WEB-INF 目录下。我们暂不需要理解复杂的配置语法,只需要在 MyEclipse 的 Package 窗口中,找到该文件 并双击,即可进入图形化的 web.xml 配置界面。该界面中,树型结构的第二项,即是“Fileters”,选中后使用 窗体右边的“Add”按钮,弹出“Add Filters”对话框;这个框中只有两项带“*”号的项目是必填的:

第一项是要为我们的过滤器起一个名字,你可以随便起一个好记的名称,例如“struts2”;

第三项是实现该过滤器的 Java 类;点击“Browse”按钮,输入 StrutsPrepareAndExecuteFilter(实际上你只需要输 入前几个字母,例如 strutsp 就可找到该类),将该类设为过滤器类即可。

添加完过滤器后,还需要指定哪些文件必须通过该过滤器。在我们的例子中,我们简单地要求所有的文件都要通过 Struts 过滤器,因此我们可以这样来设置过滤器的“mapping”:点击 web.xml 树形目录的 Filters,在右边“Filter Mappings” 列表框旁边,点击“Add”按钮,输入我们刚才的过滤器名“s2”,并在“URL-Pattern”处输入“/*”,即要求系统根目 录下所有的文件都需要通过该过滤器处理。保存 web.xml 文件;这时我们的 WarpSpeed 工程可以说已经完全支持 Struts2 了。

配置完成后的web.xml如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <display-name></display-name>   
  8.   <welcome-file-list>  
  9.     <welcome-file>index.jsp</welcome-file>  
  10.   </welcome-file-list>  
  11.   <filter>  
  12.     <filter-name>struts2</filter-name>  
  13.     <filter-class>  
  14.         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  15.     </filter-class>  
  16.   </filter>  
  17.   <filter-mapping>  
  18.     <filter-name>struts2</filter-name>  
  19.     <url-pattern>/*</url-pattern>  
  20.   </filter-mapping></web-app>  

3. 设计一个最简单的 Struts2 系统

在设计一个最简单的 Struts 系统之前,我们需要理解这样两个概念:“action”的执行和导航。

(1) 所谓“action”(“动作”),就是在表单提交后系统会自动执行的一个 Java类,该类必须继承 ActionSupport(在 com.opensymphony.xwork2 中)并重写其中的 execute()方法。表单提交后,系统会将表单里包含的字段数据传递给 该 action 类,并执行其中的 execute()方法。

(2) execute()方法必须返回一个字符串,而该字符其将决定系统要转向那个页面;这就是所谓的“导航”。 因此,一个最简单的 Struts 系统,起码包括这样几个文件:

带有表单的页面文件(jsp 文件) 表单提交后要执行的 action(java 类) Action 执行完毕要转向的页面(jsp 文件)

因此,在构建系统前,我们首先要构思我们的系统到底需要怎样的功能结构,以及需要哪些文件来实现这些功能—— 这正是软件工程的“设计”阶段的任务。作为最简单的例子,我们可以这样设计我们的系统:

(1)  页面 index.jsp,其中包含一个简单的 form,该 form 的 action 名为“aCheck”,其中包含两个文本字段:name和 password;

(2) 表单提交后要执行的 action 类为 AccountCheck;

(3) AccountCheck 类执行时,打印出传递过来的 name 和 password 参数的值

(4) AccountCheck 执行后转向页面 index2.jsp。

为了将这一个构思传递给系统,我们需要使用 struts.xml 来配置这几个文件之间的逻辑关系。

修改struts.xml代码如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">  
  3. <struts>  
  4.     <package name="default" namespace="/" extends="struts-default">  
  5.         <action name="aCheck" class="com.neuq.check.AccountCheck">  
  6.             <result name="toIndex2">/index2.jsp</result>  
  7.         </action>  
  8.     </package>  
  9. </struts>    

说明:

(1)  “action”标签定义了一个动作,该动作由其 name 属性确定,并和页面表单中的“action=”属性相对应;class 属 性则指定了该动作由哪个 Java 类来实现。例如,上面的代码相对应的页面表单应该有如下形式:

<form action="aCheck">...</form>

则上述 form 提交时,系统将寻找 AccountCheck 类并执行之。

(2) “result”标签定义了在动作执行之后的跳转(导航),其中 name属性和动作中 execute()函数的返回值相应,也就 是说,如果动作中 execute()返回值为字符串“toIndex2”,则系统跳转到 index2.jsp 页面。

(3) package 是对 action 分类的标签,其最核心的属性是“name”,该 name 是与其他 package 区分的依据;而 namespace(命名空间)属性则定义了到哪个地址寻找其下属的 action;例如,namespace="/example" 表示,如果请求的动作的URL 是/example/HelloWorld.action的话,系统首先到/example 命名空间寻找“HelloWorld”动作对应的 Java 类;如果没有找到,系统还会到默认的命名空间去寻找,以及到“/”根命名空间寻找。对于我们修改后的例子,我们只是简单的定义了一个名为“default”的 package 并指定根命名空间。需要注意的是,命名空间只有“一层”,而不是像文件目录那样可以有多个层次。另注意:URL 中“xxx.action”和简化形式的“xxx”是等同的。

linux
相关资讯       myeclipse  SSH2 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款