网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  struts2入门            【字体:
struts2入门
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-2    
 <!--[if !supportLists]-->一.<!--[endif]-->下载struts2.0.1

http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包含了开发struts2所需的struts2-core.jar核心包以及其它struts2所依赖的JAR文件,另外还有一些struts2的示例程序以及一些HTMLAPI文档。
正在装载数据……

<!--[if !supportLists]-->二.<!--[endif]-->试用struts2.0.1

1. 新建一个WEB工程,将struts-2.0.1-all.zip压缩包中的lib目录下的所有jar文件拷贝到WEB工程的/WEB-INF/lib目录下。

修改WEB-INF下的web.xml文件,加入如下内容:

 

<filter>
        
<filter-name>struts2</filter-name>
        
<filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        
</filter-class>
    
</filter>
    
<filter-mapping>
        
<filter-name>struts2</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>
    
<!-- 这里是设置struts2标签,也可以不用设置,因为在struts-core.jar的META-INF目录下已经包含了
        这个tld文件,J2EE容器会自动地加载它 
-->
    
<jsp-config>
        
<taglib>
            
<taglib-uri>/s</taglib-uri>
            
<taglib-location>
                /WEB-INF/tlds/struts-tags.tld
            
</taglib-location>
        
</taglib>
    
</jsp-config>

 

 

web.xml中定义了一个struts2FilterDispathcerfilter,这个FilterDispatcher用来初始化struts2并且处理所有的WEB请求。

       2. 新建一个登录页面login.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding
="UTF-8"
%>
<%@taglib divfix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<s:form action="login">
    
<table align="center">
    
<caption><h3>用户登录</h3></caption>
        
<tr>
            
<td><s:textfield label="用户名" name="username" /></td>
        
</tr>
        
<tr>
            
<td><s:password label="密  码" name="password" /></td>
        
</tr>
        
<tr align="center">
            
<td><input type="submit" value="登录"/></td><td><input type="reset" value="重填" /></td>
        
</tr>
    
</table>
</s:form>
</body>
</html>

 

3.编写Action login

 

package org.rainlife.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
    
private String username;

    
private String password;

    @Override
    
public String execute() throws Exception {
        
if (!(getUsername().equals("rainlife"))
                
&& !(getPassword().equals("rainlife"))) {
            
return ERROR;
        }
 else {
            
return SUCCESS;
        }

    }


    
public String getPassword() {
        
return password;
    }


    
public void setPassword(String password) {
        
this.password = password;
    }


    
public String getUsername() {
        
return username;
    }


    
public void setUsername(String username) {
        
this.username = username;
    }


}

 

 

在这个LoginAction类中,继承了ActionSupportActionSupport xwork2这个开源框架中的一个让action能够更加快速地工作的基类,它包含了action中许多可选服务的默认实现,可以让我们更加容易地自定义一个action

在这里我们定义了usernamepassword两个属性并提供了相应的get/set方法。并且定义了一个execute()方法,该方法覆盖ActionSupport类中的execute()方法,可以看到,它只是简单地返回一个字符串(”SUCCESS””INPUT”,而不像是在struts1中的返回一个ActionForward,这两个字符串也是在ActionSupport中定义的,在ActionSupport中定义了四个String属性,分别为SUCCESS,INPUT,ERROR,LOGIN

这样,我们的action就已经完成了,但还存在一个问题,怎么样让struts2知道我们这个自定义的action,并且可以在HTMLJSP页面中将动作提交给action呢?答案是需要配置struts.xml文件。

       4.配置struts.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<struts>
    
<package name="struts2" extends="struts-default">
        
<action name="login" class="org.rainlife.struts2.action.LoginAction">
            
<result name="error">/error.jsp</result>
            
<result name="success">/success.jsp</result>        
        
</action>
    
</package>
</struts>

 

 

在这个struts.xml配置文件中,可以发现和以前的struts-config.xml已经完全不一样了,而在webwork的配置文件非常相似。在这里,我们定义一个名name=”login”action,通过class属性指向了刚才我们创建的LoginAction类,这样,就将我们定义的action告诉给了struts2。而在HTMLJSP页面中,可以通过这个”login”这个name来将动作提交给相应的Action

如果在package中设置了namespace属性,如namespace=”/struts2”,则在JSP页面中应该将Formaction设置为”/struts2/login.action”

       5.创建error.jspsuccess.jsp

error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    
<head>
        
<title>错误页面</title>
    
</head>
    
<body>
        您不能登录!
    
</body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    
<head>
        
<title>成功页面</title>
    
</head>
    
<body>
        您已经登录!
    
</body>
</html>

Struts2会根据在LoginAction中返回的字符串(ERRORSUCCESS)来和在struts.xml<result>中的name属性所定义的字符串匹配,并跳转到相应页面。

实战struts2:用户登录
作者:Java天下    文章来源:不详    点击数:    更新时间:2007-4-3

内容提要:本文通过“用户登录”这个简单功能,介绍struts2的标志(Tag)、Action、输入校验(Input Validation)以及本地化输出(Localizing Output)。

开发环境:myeclipse5.0+eclipse3.2+jdk5.0+tomcat5.5+struts2+junit3.8

项目目录结构







 

















项目文件
1. 首先我们为“用户登录”提供一个简单入口
Welcome.jsp:

<% @ taglib divfix = " s "  uri = " /struts-tags " %>
< html >
     < head >
         < title > Welcome </ title >
         < link  href ="<s:url value=" /css/tutorial.css" /> " rel="stylesheet" type="text/css" />
     </ head >
     < body >
         < h3 >
            Commands
         </ h3 >
         < ul >
             < li >
                 < a  href ="<s:url action=" Register" /> ">Register </ a >
             </ li >
             < li >
                 < a  href ="<s:url action=" Logon!input" /> ">Sign On </ a >
             </ li >
         </ ul >
     </ body >
</ html >
这里,我们用到的是这句:


<a href="<s:url action="Logon!input"/>">Sign On</a> 暂时先不理会“!input”的具体意义,接着往下看。

2. 登录页面
Logon.jsp:


<%@ taglib divfix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <s:form action="Logon">
            <s:textfield label="User Name" name="username" />
            <s:password label="Password" name="password" />
            <s:submit />
        </s:form>
    </body>
</html>
3. 接着,编写与之对应的Action类。
com.cleversoft.struts2.demo.Logon.java:


package com.cleversoft.struts2.demo;

import com.opensymphony.xwork2.ActionSupport;

public class Logon extends ActionSupport {

    /** *//**
     * 
     */
    private static final long serialVersionUID = -9039794122089833258L;

    public String execute() throws Exception {

        if (isInvalid(getUsername()))
            return INPUT;
        if (isInvalid(getPassword()))
            return INPUT;
        return SUCCESS;
    }

    private boolean isInvalid(String value) {
        return (value == null || value.length() == 0);
    }

    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
需要注意这句:


        if (isInvalid(getUsername()))
            return INPUT;
        if (isInvalid(getPassword()))
            return INPUT;
        return SUCCESS;
如果用户名和密码均不为空的话,返回“success”,响应Menu.jsp页面;否则返回“input”,响应Logon.jsp页面。(见随后struts.xml中的Action配置)
现在我们可以回想上面出现的“!input”。

4. 以上提到返回“input”,那接着看看与之对应的输入校验页面。
Logon-validation.xml:


<!DOCTYPE validators PUBLIC 
"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message>Username is required</message>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message>Password is required</message>
        </field-validator>
    </field>
</validators>

需要注意的是,命名需要与与其对应的Action类匹配。

5. 最后需要进行Action配置。
struts.xml:

<!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.cleversoft.struts2.demo"
        extends="struts-default">
        <action name="HelloWorld"
            class="com.cleversoft.struts2.demo.HelloWorld">
            <result>/HelloWorld.jsp</result>
        </action>
        <action name="Welcome">
            <result>/Welcome.jsp</result>
        </action>
        <action name="Menu">
            <result>/Menu.jsp</result>
        </action>
        <action name="Logon!*" method="{1}"
            class="com.cleversoft.struts2.demo.Logon">
            <result type="redirect-action">Menu</result>
            <result name="input">/Logon.jsp</result>
        </action>
    </package>
</struts>
其中:


        <action name="Logon!*" method="{1}"
            class="com.cleversoft.struts2.demo.Logon">
            <result type="redirect-action">Menu</result>
            <result name="input">/Logon.jsp</result>
        </action>
“method="{1}"”等价于“method=input”,这是通配符式的写法。

6. 其他

Menu.jsp:


<html>
    <head>
        <title>Missing Feature</title>
    </head>

    <body>
        <p>
            This feature is under construction. Please try again in the next interation.
        </p>
    </body>
</html>

7. 运行
访问http://localhost:8080/struts2/Welcome.action
运行结果:












登录







输入校验













登录成功
















8. 本地化输出
首先需要添加资源文件
package.properties:

requiredstring = $\{getText(fieldName)} is required.
password = Password
username = User Name

接着需要修改Logon-validation.xml和Logon.jsp
Logon-validation.xml:

<!DOCTYPE validators PUBLIC 
"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message key="requiredstring"/>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message key="requiredstring"/>
        </field-validator>
    </field>
</validators>

Logon.jsp:

<%@ taglib divfix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <s:form action="Logon">
            <s:textfield label="%{getText('username')}" name="username"/>
            <s:password label="%{getText('password')}" name="password" />
            <s:submit />
        </s:form>
    </body>
</html>

参考资料:
1. Getting Started
2. http://www.blogjava.net/max/category/16130.html

 


本文来源:http://blog.csdn.net/andilyliao/archive/2007/08/27/1760567.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • page、request、session、ap…

  • JSF 的性能远不及 JSP 或 St…

  • Struts2学习:在struts2中集…

  • SPRING+STRUTS+HIBERNATE登录…

  • JSP标准模板库(JSTL)入门教…

  • 搭建JSTL运行环境

  • struts多附件上传

  • JavaWeb中的Session、Sessio…

  • struts异常_does not start …

  • 进程防杀与屏蔽WIN 、alt+ta…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David