三、struts测试

ssh之雇员管理系统(5)-添加struts测试_html

struts学习的不是很好,很久没有接触啦,现在拿来学习。

  1. 首先配置各个包,由于现在做struts是页面的跳转,所以建包也是有讲究的,为com.wang.web.action和com.wang.web.form
  2. 其中action为表单提交的业务逻辑,即处理表单的逻辑类,他集成ActionForm类,下面介绍下ActionForm这个类为这个org.apache.struts.action.ActionForm下面来自百度百科的介绍如下:ssh之雇员管理系统(5)-添加struts测试_html_02
  3. ActionMapping这个也会用到的

ssh之雇员管理系统(5)-添加struts测试_struts_03

  • 页面布局login.jsp

ssh之雇员管理系统(5)-添加struts测试_html_04ssh之雇员管理系统(5)-添加struts测试_apache_05

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>My JSP 'login.jsp' starting page</title>
</head>

<body>
<h1>管理员登陆</h1>
<form action="/myssh/login.do?flag=login" method="post">
<table>
<tr><td>id:</td><td> <input type="text" name="id" /></td></tr>
<tr><td>pw:</td><td><input type="password" name="pwd"/></td></tr>
<tr><td><input type="submit" value="登陆" /></td><td><input type="reset" value="重填"/></td></tr>
</table>

<br/>

</form>
</body>
</html>

View Code

  • 表单form类 EmployeeForm.java

ssh之雇员管理系统(5)-添加struts测试_html_04ssh之雇员管理系统(5)-添加struts测试_apache_05

package com.wang.web.form;

import org.apache.struts.action.ActionForm;

public class EmployeeForm extends ActionForm{

private String id;
private String pwd;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}


}

View Code

  • 用于接收表单提交的数据的Action为ActionForm.java

ssh之雇员管理系统(5)-添加struts测试_html_04ssh之雇员管理系统(5)-添加struts测试_apache_05

package com.wang.web.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.wang.web.form.EmployeeForm;

public class LoginAction extends DispatchAction {

/**
* 当一个请求发来时次方法将被执行
*/

public ActionForward login(ActionMapping map, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
EmployeeForm employeeForm = (EmployeeForm) form;
if("123".equals(employeeForm.getPwd())){
return map.findForward("ok");
}else {
return map.findForward("err");
}
}

public ActionForward loginout(ActionMapping map, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
return super.execute(map,form,request,response);
}
}

View Code

  • 核心的位置为这个struts-config.xml

ssh之雇员管理系统(5)-添加struts测试_html_04ssh之雇员管理系统(5)-添加struts测试_apache_05

<?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="employeeForm" type="com.wang.web.form.EmployeeForm" />
</form-beans>
<action-mappings>
<action path="/login" parameter="flag" name="employeeForm" type="com.wang.web.action.LoginAction">
<forward name="ok" path="/WEB-INF/MainFrame.jsp"/>
<forward name="err" path="/WEB-INF/login.jsp"/>
</action>
</action-mappings>
</struts-config>

View Code

ssh之雇员管理系统(5)-添加struts测试_apache_12

这里面配置,form表单为<form-bean>中,对应它的<action-mapping>这里面name必须对应,而<action-mapping>的type必须为Action的类用于处理此处的

form传递的值,那为啥他能处理呢,由于

ssh之雇员管理系统(5)-添加struts测试_apache_13

这里的ActionForm.java继承自DispatchAction所以要复写它的execute方法,再将其改成自己的方法,即login方法,这里他有四个参数,ActionMapping为页面跳转的,ActionForm为将form表弟的值给EmployeeForm的set方法,将值全部set进去。



作者:少帅

您的支持是对博主最大的鼓励,感谢您的认真阅读。

本文版权归作者所有,欢迎转载,但请保留该声明。