三、struts测试
struts学习的不是很好,很久没有接触啦,现在拿来学习。
- 首先配置各个包,由于现在做struts是页面的跳转,所以建包也是有讲究的,为com.wang.web.action和com.wang.web.form
- 其中action为表单提交的业务逻辑,即处理表单的逻辑类,他集成ActionForm类,下面介绍下ActionForm这个类为这个org.apache.struts.action.ActionForm下面来自百度百科的介绍如下:
- ActionMapping这个也会用到的
- 页面布局login.jsp
<%@ 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
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
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
<?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
这里面配置,form表单为<form-bean>中,对应它的<action-mapping>这里面name必须对应,而<action-mapping>的type必须为Action的类用于处理此处的
form传递的值,那为啥他能处理呢,由于
这里的ActionForm.java继承自DispatchAction所以要复写它的execute方法,再将其改成自己的方法,即login方法,这里他有四个参数,ActionMapping为页面跳转的,ActionForm为将form表弟的值给EmployeeForm的set方法,将值全部set进去。
作者:少帅
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但请保留该声明。