在MyEclipse中新建项目,在MyEclipse→Java Enterprise Projects中选择Web Project。eclipse中为MeEclipse→J2EE Projects,两者是一样的。
Project Name命名为:StrutsProject
项目新建之后,MyEclipse会自动编译。让人感觉很糟糕的是index.jsp文件默认就有警告!
The import java.util is never used
尽管只是一个导入包没有使用的提示,但是这样很不人性化!
将第一句话<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
改为<%@ page language="java" contentType="text/html;charset=gb2312"%>即可消除警告!
★开发过程:
1、为项目添加Struts支持
项目名右键→MyEclipse→Add Struts Capabilities...
Struts Specification:选择Struts1.2
Base Package for new classes:更改包名→cn.bupt.wj.struts
Struts config path:/WEB-INF/struts-config.xml
ActionServlet name:action
URL pattern:*.do
点击完成之后,项目中就会添入很多的jar文件。
在WebRoot文件夹上点右键→new→JSP(Advanced Templates)模板
—→在Template to use:选择Standard JSP using Struts 1.2
完成之后就可以看到一个已经加入了Struts的JSP页面。
多了几个标签:
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
标签的作用是后续学习的内容
将下述没用的内容删掉:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
保存页面之后,用login.jsp再复制如下三个:
errors.jsp login_success.jsp login_failure.jsp
→共计四个JSP页面。在<body></body>写上提示信息。
<html:errors />是一个Struts标签,对应:<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
————————————————————————————————————
<html:form action="" method="post">
用户名:<html:text property="name"></html:text>
密 码:<html:password property="password"></html:password>
<html:submit value="登陆"></html:submit>
<html:reset value="重置"></html:reset>
</html:form>
————————————————————————————————————
<!--和以往的html表单不一样-->
<form action="" method="post">
用户名:<input type="text" name="uname" />
密码:<input type="password" name="upass"/>
<input type="submit" value="提交"/>
</form>
————————————————————
订制透视图Customize Perspective→Web-Struts→Struts1.2→Struts1.2 Form, Action & JSP
在src上点右键,在new里面会增加了一个快捷方式(Struts1.2 Form, Action & JSP)!!
Form(ActionForm)
Action
添加点击Struts1.2 Form, Action & JSP之后:
struts1.2 Form Declaration中:
Use case:login →用例
Name:自动设置为loginForm
Super class:选择org.apache.struts.action.ActionForm
在Form Properties中添加name、password属性。
点下一步:
struts1.2 Action Declaration:默认
完成之后,在src目录中加入了
cn.bupt.wj.struts.action→LoginAction.java→动作
cn.bupt.wj.struts.form→LoginForm.java→完成数据验证
******************************************************************
cn.bupt.wj.struts→ApplicationResources.properties→资源文件,用来保存信息
******************************************************************
login.jsp←——对应——→LoginForm.java
***********name、password****************
用户在login.jsp页面中提交的name将传递到LoginForm.java
所以说,在LoginForm.java中的this.name就是指用户提交的name值!!
——————————————
/** password property */
private String password;
/** name property */
private String name;
——————————————
用户名:<html:text property="name"></html:text>
密 码:<html:password property="password"></html:password>
————————————————————————————————————
LoginForm.java就是一个bean
Struts中的跳转语句通过mapping完成
struts-config.xml中的经典片段:
<form-beans >
<form-bean name="loginForm" type="cn.bupt.wj.struts.form.LoginForm" />
</form-beans>
<action-mappings >
<action
attribute="loginForm" —→对应上面的form-bean
input="/errors.jsp" —→登录失败
name="loginForm"
path="/login" —→login.jsp登录时要去的地方
scope="request"
type="cn.bupt.wj.struts.action.LoginAction" >
<forward name="succ" path="/login_success.jsp"></forward>
<forward name="fail" path="/login_failure.jsp"></forward>
</action>
</action-mappings>
————————————————————————————
//LoginAciton.java中的核心语句:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
{
//loginForm获得用户在前台输入的name、password值
LoginForm loginForm = (LoginForm) form;
//将用户输入的值,传递给ActionForm的子类
String name = loginForm.getName();
String password = loginForm.getPassword();
if("wangjian".equals(name)&&"123456".equals(password))
{
//跳转到成功页
return mapping.findForward("succ");
}
else
{
//跳转到失败页
return mapping.findForward("fail");
}
}
————————————————————————————————
login.jsp→login.do→LoginForm.java→LoginAction.java→Struts-config.xml→login_success.jsp(login_failure.jsp)
LoginForm.java→判断!
LoginAction.java→动作!!