三、struts测试
struts学习的不是很好,很久没有接触啦,现在拿来学习。
- 首先配置各个包,由于现在做struts是页面的跳转,所以建包也是有讲究的,为com.wang.web.action和com.wang.web.form
- 其中action为表单提交的业务逻辑,即处理表单的逻辑类,他集成ActionForm类,下面介绍下ActionForm这个类为这个org.apache.struts.action.ActionForm下面来自百度百科的介绍如下:
-
ActionMapping这个也会用到的
- 页面布局login.jsp
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<%@ 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>
- 表单form类 EmployeeForm.java
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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; } }
- 用于接收表单提交的数据的Action为ActionForm.java
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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); } }
- 核心的位置为这个struts-config.xml
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<?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>
这里面配置,form表单为<form-bean>中,对应它的<action-mapping>这里面name必须对应,而<action-mapping>的type必须为Action的类用于处理此处的
form传递的值,那为啥他能处理呢,由于
这里的ActionForm.java继承自DispatchAction所以要复写它的execute方法,再将其改成自己的方法,即login方法,这里他有四个参数,ActionMapping为页面跳转的,ActionForm为将form表弟的值给EmployeeForm的set方法,将值全部set进去。