struts1.2简单范例复习

    技术2022-05-18  10

    在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→动作!!


    最新回复(0)