本节目的:
1.改写login.jsp 使用struts2标签的形式,这样才可以完成 2
2.让Action集成自ActionSupport ,重写其中的validate()方法 完成校验
3.判断用户名为 hello ,密码为 world 才到成功页面
步骤:
1.先把标签导入进来,标签的tld 文件在struts-2.0.14-all\struts-2.0.14\lib\struts2-core-2.0.14\META-INF\struts-tags.tld ,放在WEB-INF下
2.使用标签改写页面
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib uri="oscache" prefix="cache"%>
<%@ taglib uri="/WEB-INF/struts-tags.tld" prefix="s"%>
<%@page import="java.util.Date"%>
<HTML>
<body>
没有缓存的日期: <%= new Date() %><p>
<!--自动刷新-->
<cache:cache time="30">
每30秒刷新缓存一次的日期: <%= new Date() %>
</cache:cache>
<!--手动刷新-->
<cache:cache key="testcache">
手动刷新缓存的日期: <%= new Date() %> <p>
</cache:cache>
<a href="cache2.jsp">手动刷新</a>
<s:form action="login.action" method="post">
<s:textfield name="username" label="用户名"></s:textfield>
<s:password name="password" label="密码"></s:password>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</HTML>
3.写action
package cn.com.xinli.test.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport
{
private String username;
private String password;
/*
* 客户端和Action的匹配是按方法的名字
* 而不是属性名字
* 比如客户端发过来的是password则会找setPassword
* 而不是找属性password
*
* */
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String execute() throws Exception
{
/*好的习惯常量放在前面,则不会抛出空指针异常*/
if(!"hello".equals(this.getUsername().trim()) || !"world".equals(this.getPassword().trim()))
{
/*如果出现错误,错误信息加在username字段的上面*/
this.addFieldError("username", "用户名或密码错误!");
return "failer";
}
/*小写,默认会找result标签配置的页面*/
return "success";
}
@Override
public void validate()
{
if(null==this.getUsername() || "".equals(this.getUsername().trim()))
{
/*增加一个错误,这里可以使用国际化*/
/*第一参数为表单字段的名字,第2个参数为表单错误信息*/
this.addFieldError("username", "用户名不能为空!");
}
if(null==this.getPassword() || "".equals(this.getPassword().trim()))
{
/*增加一个错误,这里可以使用国际化*/
/*第一参数为表单字段的名字,第2个参数为表单错误信息*/
this.addFieldError("password", "密码不能为空不能为空!");
}
}
}
4.写配置文件
<?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="cn.com.xinli.test.action.LoginAction">
<result>/result.jsp</result>
<!-- input 为规定的写法,表明表单验证失败的时候转向的页面 -->
<result name="input">/login.jsp</result>
<result name="failer">/login.jsp</result>
</action>
</package>
</struts>
5.打开tomcat,运行http://localhost:9090/struts2/login.jsp
分享到:
相关推荐
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括MVC设计模式的实现、类型转换、国际化、拦截器等。在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理...
struts 初步认识Struts2并部署验证 struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换...strrts10 第七讲struts2中的案例
- **Struts2**:使用OGNL进行类型转换,提供更灵活的配置和基本及常见类型的转换器。 9. **校验**: - **Struts1**:校验可以在ActionForm的validate方法中完成,或使用Commons Validator扩展,对子对象的校验...
3. **依赖库**:如ognl.jar(Object-Graph Navigation Language)、freemarker.jar(FreeMarker模板引擎)、xwork-core.jar(XWork框架的基础组件)等,它们是Struts2正常工作所必需的第三方库。 4. **其他辅助库**...
#### 二、Struts2数据类型转换的意义 在Struts2中,数据类型转换的意义主要体现在以下几个方面: 1. **确保数据一致性**:通过类型转换,可以确保服务器接收到的数据与业务逻辑层中对象的属性类型保持一致,避免因...
在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...
通过这两课时的学习,你应该能够熟练掌握Struts2类型转换器的使用,并能根据业务需求自定义自己的转换器。这些知识对于进行Java web开发,特别是使用Struts2框架的工作来说,是非常关键的。理解并运用好类型转换器,...
- **Struts 2**:使用OGNL进行类型转换,支持更多的数据类型转换,提高了灵活性。 #### 9. 数据校验的对比 - **Struts 1**:支持在`ActionForm`中重写`validate`方法进行手动校验,也可以整合`Commons-validator`...
- **Struts2**:使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换,并且具有更高的灵活性。 #### 九、数据校验的对比 - **Struts1**:支持在`ActionForm`中重写`validate`方法进行手动校验,或者整合...
- **Struts2**: 使用OGNL进行类型转换,为基本和常用对象提供了转换器。Struts2的类型转换机制更为灵活且易于配置。 #### 9. 数据校验机制 - **Struts1**: 支持在`ActionForm`的`validate`方法中手动校验数据,...
XWork是Struts2的核心库,为Struts2提供许多底层功能,如动作调度、类型转换和异常处理等。这次我们探讨的是Struts2的最新版本`struts2-core-2.1.8.1`以及其依赖的`xwork-core-2.1.6`的源码。 1. **Action调度**:...
- **Struts2**:使用OGNL进行类型转换,框架内置了对常见类型和原始类型的转换器。 9. **验证** - **Struts1**:支持手动验证和扩展验证器,但验证子对象较困难。 - **Struts2**:提供手动验证和基于XWork的验证...
- **Struts2**:使用OGNL进行类型转换,内置转换器支持基本类型和常用对象的转换。 9. **验证** - **Struts1**:支持手动验证(ActionForm的validate方法)或公共验证器,验证子对象较困难。 - **Struts2**:...
- **Struts2-Hibernate集成**:Struts2可以通过Hibernate插件,利用SessionFactory和Session来执行数据库操作,同时可以将Hibernate异常转换为Struts2的ActionError,方便统一处理。 - **Spring-Hibernate集成**:...
- **Struts2**:使用OGNL进行类型转换,内置对常见类型和原始类型的转换器,每个实例可配置。 9. **验证**: - **Struts1**:支持手动验证(ActionForm的validate方法)或扩展的公共验证器,不同验证上下文需为同...
3. **Struts2类型转换**: - 自动类型转换:Struts2自动将表单参数转换为Action属性的类型,支持基本类型和自定义类型的转换。 - 定制类型转换器:通过实现`org.apache.struts2.conversion.Converter`接口,可以...
- `xwork-core`: XWork是Struts2的基础,提供了Ognl表达式语言、类型转换、拦截器等功能。 2. **视图技术**: - `freemarker`: Struts2默认的视图模板引擎,用于动态生成HTML页面。 - `struts2-freemarker-...
- 为了解决这些问题,Apache软件基金会推出了第二代Struts框架——Struts2。 - **Struts2的“简历”**: - Struts2于2005年由Apache软件基金会推出。 - Struts2不仅继承了Struts1的优点,还吸收了WebWork等其他...