strut 2.0的一个小demo
一、Struts2.0的配置,主要分三个步骤:(先快速配置一个简单例子)
1首先加载Struts2.0所需的jar包。在WEB-INF文件夹下创建一个lib文件夹主要放的jar为
commons-logging-1.1.jar freemarker-2.3.8.jar ognl-2.6.11.jar struts2-core-2.0.8.jar
xwork-2.0.3.jar commons-fileupload-1.2.1.jar
2 配置web.xml文件。
WEB-INF文件夹里面有个web.xml,新加“filter”和“filter-mapping” 节点。web.xml配置如下:
<filter> <filter-name>struts2</filter-name> <filter- class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在这里我们需要定义filter的名字,我定义的是叫struts2
3 配置struts.xml文件。
最后一步在我们的src源文件里,需要加一个struts.xml,记住这里要和com包在同级目录下,内容如下
:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="com" extends="struts-default"> <action name="HelloWorld" class="com.HelloWorld"> <result>/HelloWorld.jsp</result> </action> <!—这里是我添加的一个action --> </package> </struts>
struts2.0就算配置完成了,下我来说说我是怎么使用他的。
简单的HelloWorld跳转实例
首先我们需要有一个jsp页面“HelloWorld.jsp”,代码如下:
<%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Hello World!</title> </head> <body> <h2><s:property value="message" /></h2> </body> </html>
我们可以看到这里我们看到如果是运行起来的话,页面里面应该显示message的值。
我们还需要一个HelloWorld.java类,代码如下:
package com; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { public static final String MESSAGE = "Struts is up and running "; public String execute() throws Exception { setMessage(MESSAGE); return SUCCESS; } private String message; public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } }
代码很简单主要就是给message赋“Struts is up and running”值,千万别忘了需要继承
ActionSupport类即可。
二、action的学习
1)方法调用:
理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现
Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此
类里的String execute()方法。此为默认的调用方法。
若要自定义调用方法,有三种方法: 1.method单一方法,每一个action配一个方法 2.DMI(
动态调用)用action!method 3.通配符*_*,大幅度减少配置量 action_method
2)接收参数:
1.属性接收
例子:
Login.java
import com.opensymphony.xwork2.ActionSupport; publicclass Login extends ActionSupport { private String name; private String password; private String message; public String getName() { return name; } publicvoid setName(String name) { this.name = name; } public String getPassword() { return password; } publicvoid setPassword(String password) { this.password = password; } public String getMessage() { return message; } @Override public String execute() { if("max".equals(name) &&"Secret".equals(password)) { message ="Welcome, "+ name; }else{ message ="Invalid user or password"; } return SUCCESS; } }
Login.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Login</title> </head> <body> <s:form action="Login" method="POST"> <s:textfield name="name" label="User name"/> <s:password name="password" label="Password"/> <s:submit value="Submit"/> </s:form> </body> </html>
2.domain接收,更高级的POJO访问路径问题,将name和password从Login类中分离出来,到新建
类User中
Loginx.java
import com.opensymphony.xwork2.ActionSupport; publicclass LoginX extends ActionSupport { private User user; private String message; publicvoid setUser(User user) { this.user = user; } public User getUser() { return user; } public String getMessage() { return message; } @Override public String execute() { if("max".equals(user.getName()) &&"secret".equals(user.getPassword())) { message ="Welcome, "+ user.getName(); }else{ message ="Invalid user or password"; } return SUCCESS; } }
Login.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Login</title> </head> <body> <s:form action="LoginX" method="POST"> <s:textfield name="user.name" label="User name"/> <s:password name="user.password" label="Password"/> <s:submit value="Submit"/> </s:form> </body> </html>
posted on 2011-05-04 18:35 SeQuence.Choi 阅读(321) 评论(0) 编辑 收藏 举报