当前位置:文档之家› MyEclipse开发Struts2过程

MyEclipse开发Struts2过程

MyEclipse开发Struts2过程Struts2是Struts1.x的升级换代产品,但是并没有继承Struts1.x的思想和操作模式,而是一个完全不同的实现方式,所以即使学会了Struts1.x还是得从头学习Struts2,但是当你学会了Struts2后会发现这个产品对编程及配置有了很大的简化,使得程序员将更多的精力集中到业务逻辑编程方面,下面就在MyEclipse8.5M1平台下如何开发基于Struts2的Web应用系统的MVC模式中的VC部分作以简要的描述,M部分还是可以采用其他框架实现,例如Spring+Hibernate等。

(一)创建基于Struts2的Web项目从MyEclipse的菜单中一次选择File\New\Web Project,在弹窗中填写该项目的名称信息,并且选择J2EE的版本,如图:(二)添加Struts2支持将鼠标定位到Package Explorer视窗的该项目名称上,单击右键,在弹出的菜单上依次选择MyEclipse\Add Struts Capabilities,在弹窗中选择Struts的版本为Struts2.x,单击“Next”按钮进入下一个窗口,选择要加入的支持类库,库的选择视项目需求而定,可以在后续开发过程中陆续加入,这里只选择Struts2 Core Libraries。

完成这些操作后发现系统在src目录下添加了一个配置文件struts.xml,这个文件就是Struts2的核心配置文件,后续的操作都在此文件中进行。

(三)编写JSP页面代码这里注意尽量使用Struts2的标签来编写JSP代码,所以要在页面代码开始部分引入标签库,即添加该行代码<%@ taglib prefix="html" uri="/struts-tags"%>,MyEclipse8.5M1目前还不支持基于Struts2的JSP模板,所以在新建JSP页面代码的时候,先选择基于Struts1.x模板,然后再手动修改,也就是把该页面代码中引入Struts1.x的标签库换成上面提到的Struts2的标签库。

实例代码如下:<%@page language="java"pageEncoding="GBK"%><%@taglib uri="/struts-tags"prefix="s" %><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html lang="true"><head><title>MyJsp.jsp</title><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1"><meta http-equiv="description"content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><s:form action="/myStruts/Login.action"method="post"><table border="0"><tr><td><s:textfield name="login"label="用户名"/></td></tr><tr><td><s:password name="password"label="密码"/></td></tr><tr><td colspan="2"><s:submit value="提交"/></td></tr></table></s:form></body></html>注意:Action的URI由两部分组成(namespace和action名称,中间用“/”分隔),就是配置文件中对应的package标签的属性和action标签的属性值。

其他涉及到Struts2的标签有专门的资料介绍,可以参考使用,当然不用Struts2标签也完全可以完成相关的工作,我们这里重点介绍Struts2的Action开发及配置过程。

(四)编写相应的ActionStruts2的Action是将Form表单数据收集及控制逻辑集合在一体的模式,所以Action代码类似一个Bean,该Action继承了ActionSupport抽象类并且必须是ServletRequestAware接口的一个实现类。

手动编写好这个类的框架代码后,按照Form表单的字段内容添加这个Action的私有属性,然后鼠标放到这些变量名称上,系统就会提示增加对应的Bean方法,即Setter/Getter。

在该Action源代码编辑窗口的任意位置点击鼠标右键,在弹出的菜单中依次选择Source\Override/Implement Methods,在弹窗中选择父类的相应方法,系统就会自动生成这些方法,后面只需要编辑这些方法体即可将相关功能完善。

这里必须重写execute方法(只是针对Form表单中只有一个submit按钮的情形),该方法也是Action的主要逻辑处理方法,这个方法必须返回一个String类型的值,这个字符串和struts.xml中该Action标签中某个<result>标签的name属性值相同,也就是通过这个值确定页面定向位置。

实例代码如下:package com.crazyicelee.action;import javax.servlet.http.HttpServletRequest;import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.interceptor.*;/*** @author crazyicelee**/public class login extends ActionSupport implements ServletRequestAware {/* (non-Javadoc)* @see com.opensymphony.xwork2.ActionSupport#execute()*/@Overridepublic String execute() throws Exception {// TODO Auto-generated method stubSystem.out.println("name="+name);System.out.println("password="+password);return"success";}private String name;private String password;private HttpServletRequest request;/*** @param name the name to set*/public void setName(String name) { = name;}/*** @return the name*/public String getName() {return name;}/*** @param request the request to set*/public void setRequest(HttpServletRequest request) { this.request = request;}/*** @return the request*/public HttpServletRequest getRequest() {return request;}/*** @param password the password to set*/public void setPassword(String password) {this.password = password;}/*** @return the password*/public String getPassword() {return password;}public void setServletRequest(HttpServletRequest arg0) { // TODO Auto-generated method stubthis.setRequest(arg0);}}(五)完成配置文件的编写1.Web.xml文件修改在MyEclipse自动生成的web.xml基础上添加如下过滤器,而且必须添加,否则运行报错。

<filter-mapping><filter-name>struts2</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping>2.Struts.xml文件修改在MyEclipse自动生成的struts.xml基础上添加Action的说明,每个Action 都必须包含在一个Package标签内,当然可以有多个<package>。

相关主题