本节目的:
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