第一个Struts1步骤
一.前端 :登陆页面
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<body>
<html:errors/>
<form action="loginAction.do" method="post">
请您登陆,输入用户名和密码 <br>
用户名:<input type="text" name="username"><html:errors property="user.username.null"/><br/>
密码 :<input type="text" name="password"><html:errors property="user.password.null"/><br/>
<input type="submit" value="提交"> <input type="reset" value="重置"><br>
</form>
</body>
</html>
后台步骤:
一。Action类
1. extends DispatchAction;
2.重写ActionForward execute方法
Users user=(Users)form;//强制类型转换
return mapping.findForward("SUCCESS");
action类如下:
package com.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.entity.Users;
public class LoginAction extends DispatchAction{
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception{
Users user=(Users)form;
return mapping.findForward("SUCCESS");
}
}
二。实体类extends ActionForm如下:
package com.entity;
import org.apache.struts.action.ActionForm;
public class Users extends ActionForm{
private String username;
private String 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;
}
}
三。配置struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="users" type="com.entity.Users">
</form-bean>
</form-beans>
<global-exceptions/>
<global-forwards />
<action-mappings>
<action path="/loginAction" type="com.action.LoginAction" name="users">
<forward name="SUCCESS" path="/success.jsp"></forward>
</action>
</action-mappings>
</struts-config>
---------------------------------------------------------------------------------------------------------------------------------------
验证的两种方式
方法一。实体类继承ActionForm并重写验证方法
1.实体Users类如下:
package com.entity;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
public class Users extends ActionForm{
private String username;
private String 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 ActionErrors validate(ActionMapping mapping,
javax.servlet.http.HttpServletRequest request){
ActionErrors error=new ActionErrors();//继承自ActionMessages类,信息集合
if(this.getUsername()==null||this.getUsername().trim().equals("")){
error.add("user.username.null", new ActionMessage("user.username.null"));
}
if(this.getPassword()==null||this.getPassword().trim().equals("")){
error.add("user.password.null", new ActionMessage("user.password.null"));
}
return error;
}
}
2.LoginAction类
public class LoginAction extends DispatchAction{
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception{
return mapping.findForward("SUCCESS");
}
}
方法二.Action类中写验证
LoginAction类代码如下:
public class LoginAction extends DispatchAction{
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception{
Users user=(Users)form;
ActionMessages messages=new ActionMessages();//信息集合
if(user.getUsername()==null||user.getUsername().trim().equals("")){
messages.add("user.username.null", new ActionMessage("user.username.null"));//国际化
//this.addErrors(request, messages);
//return mapping.findForward("INPUT");
}
if(user.getPassword()==null||user.getPassword().trim().equals("")){
messages.add("user.password.null", new ActionMessage("user.password.null"));
//this.addErrors(request, messages);
//return mapping.findForward("INPUT");
}
if(messages.size()>0){
this.addErrors(request, messages);
return mapping.getInputForward();
//return mapping.findForward("INPUT");
}
return mapping.findForward("SUCCESS");
}
}
3.struts-config.xml中<action>内容修改如下:
<action input="/index.jsp" path="/loginAction" type="com.action.LoginAction" name="users">
<forward name="SUCCESS" path="/success.jsp"></forward>
</action>
第一个Struts1步骤的更多相关文章
- pig里面没有if:不能判断一个条件后决定一个执行步骤
pig是处理流 的工具,所以数据集是流对象,处理步骤也是一样的. Pig中存在按条件处理流对象的方式有 1)filter X= FILTER A BY (f1 == 8); 2)CASE WHEN T ...
- 完整的开发一个ContentProvider步骤
1.定义自己的ContentProvider类,该类需要继承Android提供的ContentProvider基类.2.向Android系统注册这个"网站",也就是在Android ...
- python 创建一个实例:步骤一 编写一个构造函数
编写一个构造函数 #在python中,person 类的第一件是就是记录关于人员的基本信息,这叫做实例对象属性,并且它们通常通过给类方法函数中的self 属性赋值来创建. #赋给实力属性第一个值得通常 ...
- appium+python 启动一个app步骤
询问度娘搭好appium和python环境,开启移动app自动化的探索(基于Android),首先来记录下如何启动待测的app吧! 如何启动APP?1.获取包名:2.获取launcherActivit ...
- [SoapUI] 从上一个测试步骤获取ID list,通过Groovy脚本动态生成 Data Source 供后面的步骤使用
https://support.smartbear.com/readyapi/docs/testing/data-driven/types/groovy.html 从官网拷贝code到SoapUI里面 ...
- python 创建一个实例:步骤二 添加行为方法,编写方法
添加方法 class Person(): def __init__(self,name,job=None,pay=0): self.name= name self.job = job self.pay ...
- ystep jQuery流程、步骤插件
今天小菜给大家带来又一款给力jQuery插件:ystep. 从名称上大致可以看出,这是一个流程步骤插件. 如果无意外的话,这可能是小菜近期最后一个作品了...苦逼的小菜即将创业,可能就没时间折腾啦~好 ...
- 多步骤多分步的组件StepJump
最近的工作在做一个多步骤多分步的表单页面,这个多步骤多分步的意思是说这个页面的业务是分多个步骤完成的,每个步骤可能又分多个小步骤来处理,大步骤之间,以及小步骤之间都是一种顺序发生的业务关系.起初以为这 ...
- SOAPUI使用教程-创建MockResponse步骤
MockResponse测试步骤监听一个SOAP请求并返回一个预先配置的响应,然后再继续. 传入的请求的能被断言检查. 这种TestStep使用场景是例如: 客户端测试,验证传入的请求并返回假或不正确 ...
随机推荐
- Vi中的^M问题
一般情况下,windows下编辑过的文件放到Linux下行尾会多出一个^M符号 1.可以通过dos2unix 命令作用与文件消除 2.或者在VI内通过 只需要在vi/vim 中输入命令:%s/\r// ...
- jquery datatable 参数
DataTables(http://www.datatables.net/)应该是我到目前为止见过的,功能最强大的表格解决方案(当然,不计算其它整套框架中的table控件在内). 先把它主页上写的特性 ...
- SQL笔记 [SQL判断是否存在] [长期更新] (-2015.4)
--判断某个存储过程是否存在if exists (select * from sysobjects where id = object_id(N'[p_CreateTable]') and OBJEC ...
- writel(readl(&pwm_timer->tcfg0) | 0xff, &pwm_timer->tcfg0);
解析这句代码什么意思! 神说:选定预分频器0 为什么? 神说:因为实验中选的是timer1,在预分频器0下: 若选择timer4,该如何写这句代码? 首先看tcfg0中选择预分频器1,在看tcfg1里 ...
- 【转载】Fast Inserts to PostgreSQL with JDBC and COPY FROM
source: http://rostislav-matl.blogspot.com/2011/08/fast-inserts-to-postgresql-with-jdbc.html Thanks ...
- Office 开发版本号与版本对应关系
Office 开发版本号与版本对应关系: office97 : 8.0 office2000 : 9.0 officeXP(2002) : 10.0 office2003 : 11.0 office2 ...
- CSS-页面布局
介绍 几个实现多栏布局的方法.主要介绍使用内部div来创建浮动的栏. 多栏布局有三种基本的实现方案:固定宽度.流动.弹性. 固定宽度布局的大小是随用户调整浏览器窗口大小而变化,一般是900至1100像 ...
- localstorage,sessionstorage使用
今天看了一下HTML5,也算是简单的学习一下吧,HTML5 提供了两种在客户端存储数据的新方法:localstorage,sessionstorage. localStorage - 没有时间限制的数 ...
- Java值传递和引用传递详细解说
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是 Java中到底是否只存在值传递,因为在查阅资料时,经常看到 ...
- oracle SQL查询中间若干条记录
方法一:利用rownum和差集函数minus select * from ( select * from emp order by sal) where rownum<13 minus sele ...