- 浏览: 344093 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (97)
- 搜索引擎 (9)
- JAVA基础知识 (7)
- Struts (13)
- Spring (1)
- Hibernate (0)
- iBATIS (2)
- ExtJs (10)
- AJAX (0)
- Oracle (1)
- MSSQLSERVER (1)
- MySQL (0)
- Prototype (0)
- DWR (0)
- EJB (0)
- J2EE综合 (0)
- 算法 (1)
- WebServices (0)
- JMS (0)
- JavaMail (0)
- JMX (0)
- UML (0)
- Dojo (0)
- Acegi (2)
- 其他Html-XML等 (3)
- CSS (1)
- 其他开源项目 (0)
- 英语 (0)
- Web3D (24)
- FCKeditor (1)
- javascript 特效 (2)
最新评论
-
荷戟者:
如何实现的,是否可以想象一点
extjs实现左侧tab -
coconut_zhang:
怎么没人评论,吼吼。。
HTMLParser使用详解(4)- 通过Visitor访问内容 -
Sorry':
JDBC中处理存储过程的结果集的通用流程 -
Sorry':
计划将客户
JDBC中处理存储过程的结果集的通用流程 -
renhongchao:
very good!在csdn也看到相同的文章,莫非是同一人? ...
HTMLParser使用详解(3)- 通过Filter访问内容
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
1.Logon.jsp<o:p></o:p>
许多Web应用需要处理表单,下面我们从logon.jsp入手,看看Struts2处理表单的机制。
Logon.jsp<o:p></o:p>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Logon</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>
|
说明:
页面中用到了struts2的3个标签:textfield,password,submit。大家可以“望文生义”,这里不再多说。
承接上文的struts.xml的配置(见附录1),我们在地址栏中输入:
可相应的调出Login.jsp。
提示:因为这里对应struts.xml中的如下配置
<action name="*">
<result>/example/{1}.jsp</result>
</action>
|
记住,这句话必须写在action声明部分的最后,如果写在前面,很有可能导致后面的action配置被忽略,因为检索到这里,就能得到正确的配置结果。
2.Logon.java<o:p></o:p>
相当于struts1中的Form,我们建立Logon.java,其中有username和password的设置。
Logon.java<o:p></o:p>
package example;
import com.opensymphony.xwork2.ActionSupport;
<o:p> </o:p>
public class Logon extends ActionSupport {
private static final long serialVersionUID = <st1:chmetcnv unitname="l" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">1L</st1:chmetcnv>;
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;
}
}
|
说明:
1.setXXX和getXXX方法可得到和处理Login.jsp表单中的数据。
2.isInvalid()方法做个简单的判断,只要username和password都不为空,则返回真,否则返回假。
3.execute()方法,起到跳转的作用,相当于struts1种action的用途,如果isInvalid()方法返回真,则跳转到SUCCESS设置,否则跳转到INPUT设置。
4.关于SUCCESS和INPUT
当action(此处是Logon.java)处理完request时,它会返回相应的response。这个返回的结果可以是一个HTML页面,一个JSP页面,一个action或其他种种结果。多种结果可以被一个action mapping得到,关键是选择哪个返回结果的问题。一个action通常返回一个名字,此名字对应一个可能的返回结果。这些都需要在struts.xml中设置。看下面在struts.xml中的设置。
<action name="Logon" class="example.Logon">
<result type="redirect-action">Menu</result>
<result name="input">/example/Logon.jsp</result>
</action>
|
说明:
1.<action name="Logon" class="example.Logon">
此句表明所要调用的action名与相应的类的位置。
2.<result type="redirect-action">Menu</result>
此句表明默认为SUCCESS的处理结果,从type="redirect-action"可以得知,它将调用另一个名为Menu的action。
3.<result name="input">/example/Logon.jsp</result>
此句表明返回input的情况,它将跳转到Logon.jsp。
<o:p> </o:p>
至此,对Logon.java中的两个跳转设置都在struts.xml中作了交代。下面来看看Menu这个action的定义,并引出设置存根(stub)页面的方法。
3.如何设置存根(stub)页面<o:p></o:p>
Menu.jsp<o:p></o:p>
<html>
<head><title>Missing Feature</title></head>
<body>
<p>
This feature is under construction.
Please try again in the next interation.
</p>
</body>
</html>
|
说明:
当调用Logon这个action时,如果返回SUCCESS,则会跳转到Menu这个action,我们写一个Menu.jsp可到调出相应的页面。这是一个“缺失”页面的常规页面。我们可以将它做成可重用的形式。方法如下,我们定义一个Missing.jsp,其内容就是Menu.jsp中的内容,接着,我们修改Menu.jsp。
Menu.jsp<o:p></o:p>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:include value="Missing.jsp" />
|
这样,就能加载Missing.jsp。
4.关于验证<o:p></o:p>
验证可以通过一个XML文档来描述,也可以使用注解(关于注解annotations没有介绍)。使用xml进行验证则需将相应的文件名命名为“-validation”这种形式。我们这里使用“Logon-validation”这个名字,表明我们将验证Logon这个action。
Logon-validation.xml<o:p></o:p>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator <st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.0.2</st1:chsdate>//EN"
"http://www.opensymphony.com/xwork/xwork-validator-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.0.2</st1:chsdate>.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>
|
说明:
1.为了表明是我们的xml验证发挥作用,我们将Logon.java中关于验证的部分注释掉。
//public String execute() throws Exception {
// if (isInvalid(getUsername()))
// return INPUT;
// if (isInvalid(getPassword()))
// return INPUT;
// return SUCCESS;
// }
|
2.<field name="username">
<field-validator type="requiredstring">
<message>Username is required</message>
</field-validator>
</field>
此段说明验证的字段是username,验证的类型为requiredstring,即为空验证,如果为空则返回message: Username is required。我们看看验证结果:
3.这里有一个问题,当我们第一次调用Logon.jsp这个页面时,我们并不需要对此进行验证。我们可以这样做,我们可以利用父类ActionSupport提供的input方法来“绕过”验证。我们做如下修改:
Welcome.jsp(文件在附录2中说明)<o:p></o:p>
将:<li><a href="<s:url action="Logon"/>">Sign On</a></li>
换为:<li><a href="<s:url action="Logon_input"/>">Sign On</a></li>
|
<o:p> </o:p>
struts.xml<o:p></o:p>
将:<action name="Logon" class="example.Logon">
换为:<action name="Logon_*" method="{1}" class="example.Logon">
|
说明:
1.在Welcome.jsp页面中点击超链接Sign On,将调用Logon_input action。
2.根据struts.xml中的设置,我们将处理这条配置(注意,参数input):
<action name="Logon_input" method="input" class="example.Logon">
3.在Logon类中将调用input方法(依据:method="input")。
4.input方法将使得验证被绕过,并返回默认结果“input”。
5.显然,input将会再次导入Logon.jsp,此时没有验证的语句出现(指“Username is required”)。原因在于这次是直接导入jsp页面,而不是经过action导入的。
<o:p> </o:p>
下面开始进行验证了。当我们点击submit,将进行如下操作。
1. 系统检查是否有针对于目标action即Logon的验证。
2. 系统发现Logon-validation这个xml文件,系统将自动创建一个验证对象来验证这个类。
3. 开始验证输入的参数。
4. 如果验证失败,它的message将加入到一个内部的队列中。
5. 当所有的验证完成,如果验证没有通过,将返回结果“input”,并且不再返回到原Action类。
6. 当所有验证完成,如果验证通过,则返回“success”。
<o:p> </o:p>
总结,我们可以使用验证机制来代替Action类中的execute()方法。
这里简单的示范一下如何使用资源文件。下面我们定义一个资源文件。
package.properties<o:p></o:p>
requiredstring = $\{getText(fieldName)} is required.
password = Password
username = User Name
|
我们对Logon-validation.xml和Logon.jsp做一下修改。
Logon-validation.xml<o:p></o:p>
发表评论
-
详解struts2中struts.properties
2007-10-25 00:17 2723Stru ... -
struts2的struts.properties配置文件详解
2007-10-24 23:55 2198struts.action.extension ... -
Struts 2 间接实现零配置
2007-10-19 11:41 1768所谓间接实现零配置,是指只要做些初始化的配置之后,在以后的开发 ... -
Parameters in configuration results
2007-10-10 17:12 1217Parameters in configura ... -
How do we upload files
2007-10-10 16:47 1485xml 代码 How do we upload ... -
display dynamic or static images
2007-10-10 16:38 1630How can we display dynamic or s ... -
Struts2 验证器
2007-10-08 22:30 4364<validators> ... -
初涉Struts 2.0
2007-10-06 09:43 1197初涉Struts 2.0... -
Apache Struts 2 Plugin Registry
2007-10-03 17:25 2144Apache Struts 2 Plugin Registry ... -
Struts 2 官方
2007-10-03 17:22 11406Struts 2 官方: http://struts.apac ... -
struts2与spring2集成
2007-10-03 17:12 1233在Eclipse下建立一个Dynamic Web Applic ... -
struts2的struts.properties配置文件详解
2007-10-03 17:02 1166struts.action.extension ... -
Struts 2与AJAX(第三部分)
2007-10-03 16:53 1506Struts 2与AJAX(第三部分 ... -
Struts 2与AJAX(第二部分)
2007-10-03 16:52 1645在上一篇文章《Struts 2与AJAX(第一部分)》,我已经 ... -
Struts 2与AJAX(第一部分)
2007-10-03 16:51 1667Struts 2与AJAX(第一部分) 在当今——Web 2 ... -
struts2表单标签
2007-10-03 16:48 1629Form Tags ... -
Struts2介绍之使用链接标签
2007-10-03 16:42 1868Web应用区别于普通的站点之处在于Web应用可以创建一个动态的 ... -
Strus 2的新表单标志的使用
2007-10-03 16:35 1163Struts 2为大家提供了不少常用的很酷的表单标志,简化了我 ... -
在Struts 2中实现文件上传
2007-10-03 16:33 1234实现原理 Struts 2是通过Commons FileUpl ... -
在Struts 2中实现IoC
2007-10-03 16:32 1060IoC(Inversion of Control,以 ...
相关推荐
在"struts_demo(logon)"这个项目中,我们可以看到它是一个基于Struts框架实现的登录功能的示例。 首先,让我们了解一下Struts框架的关键组件: 1. **ActionServlet**:这是Struts框架的核心,负责处理所有的HTTP...
`INPUT`结果会使得Struts2重新加载`Logon.jsp`页面,显示错误消息(如果已配置)。如果验证成功,返回`SUCCESS`,通常会重定向到成功页面,例如菜单页面`Menu.jsp`。 4. 数据验证: 当Action返回`INPUT`时,Struts...
当用户访问`logon.action`时,Struts2框架会自动调用`tutorial.Logon`类的`execute()`方法,并根据返回值来决定执行哪个结果。例如,如果`execute()`方法返回`"input"`,那么框架会渲染`/tutorial/Logon.jsp`页面。 ...
### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...
这个例子中,当用户请求"logon.action"时,Struts2会实例化`tutorial.Logon`类并调用其`execute()`方法。如果执行成功,结果类型为"redirect-action",用户会被重定向到"Menu";如果执行失败,显示"Logon.jsp"。 2...
"SAP Logon参数详解" SAP Logon参数是SAP系统中用于控制用户登录的参数,包括密码检查、多重登录、错误登录、SSO登录票据等。下面将详细介绍SAP Logon参数的每个方面。 一、密码检查参数 密码检查参数是用于定义...
<action name="Logon" class="com.cleversoft.struts2.demo.Logon" method="{1}"> <result name="input">/WEB-INF/jsp/Logon.jsp <result name="success">/WEB-INF/jsp/Menu.jsp ``` 这里的 `{1}` 代表根据...
例如,登录界面可以通过logon.jsp创建,表单数据会被提交到配置在struts.xml中的Action,然后进行验证和处理。如果验证失败,用户将被重定向回登录页面;验证成功,则允许用户访问受保护的资源。 对于用户CRUD操作...
1. 创建logon.jsp和main.jsp,使用Struts2标签库编写表单元素。 2. 创建ActionForm类,比如`LoginForm`,包含用户名和密码属性。 3. 编写对应的Action类,如`LogonAction`,处理登录请求,验证用户输入,并设置结果...
Struts2 框架是Java Web开发中广泛使用的MVC框架之一,它极大地简化了企业级应用的构建。在Struts2中,拦截器扮演着至关重要的角色,它们允许开发者在Action执行前后插入额外的功能,如日志记录、权限验证、数据校验...
Struts采用了Model2架构,这种架构更好地实现了模型、视图与控制器之间的分离,提高了系统的可扩展性和可维护性。 **2.4.3 应用层—视图之间的去耦合** Struts通过ActionServlet作为控制器来管理请求处理流程,...
例如,在`struts-action.xml`文件中,可以看到`LogonAdmin`包下定义了两个Action:`logon`和`logout`。虽然这些Action没有显式地配置拦截器,但它们会继承自`struts-shop`包的默认拦截器栈`myStack`,因为`...
2. **Action类**:Action类是Struts的核心组件,负责处理用户的请求,执行相应的业务逻辑,并将结果转发到特定的视图。 3. **配置文件**:包括struts-config.xml,它是Struts应用的主要配置文件,用于定义Action、...
### Struts2框架详解 #### 一、Struts2简介 **Apache Struts2** 是一个基于MVC(Model-View-Controller)架构模式的开源Java Web应用框架,旨在简化Web应用的开发过程。它继承了原Struts框架的一些优点,并结合了...
- **Logon应用**:该应用是一个简单的登录系统,主要包括欢迎页面、登录页面和退出功能。 - **欢迎页面**:展示应用的欢迎信息,引导用户进行登录。 - **登录页面**:用户输入用户名和密码,提交后由Struts处理...
### Mock Struts1 测试详解 #### 一、引言 在软件开发过程中,单元测试是一种重要的质量保证手段。对于基于Struts框架的应用程序来说,如何有效地进行单元测试尤为重要。Struts1作为早期广泛使用的MVC框架之一,在...
无忧登录51logon无忧登录51logon无忧登录51logon
Struts2标签是Apache Struts2框架中用于生成Web页面内容的一种机制,它允许开发者以标签的形式嵌入服务器端逻辑,从而构建动态Web页面。Struts2标签库提供了一系列的标签,用来替代JSP的脚本元素,简化了页面的开发...