Struts初体验之实施篇

原创 2002年12月23日 17:52:00

   Struts初体验之实施篇

                   baitianhai     baichenhong@hotmail.com

   开发环境 window2000+jbuilder7+tomcat4.1.12

   首先,从http://jakarta.apache.org下载jakarta-struts-1.0.2.zip,解开后有两个主要目录libwebappslib目录中是使用struts创建应用程序所必需的文件,在webapps目录下有几个后缀是war的文件,熟悉java web开发的人都比较清楚,将他们copy到tomcat/ webapps/目录下,然后再重新启动tomcat,tomcat会将这些web工程部署好的,其中Struts-documentation.war是文档,Struts-example.war是一个不错的例子,我主要就是参考这个例子来做的。然后在jbuilder安装目录/lib/下建立 struts目录,将上面的lib目录下的东西copy进去,然后启动jbuilder7,运行菜单tools->configure->libraries->new->name  输入struts,然后选择刚才copy过去的struts.jar文件,然后OK

   其次,新建立一个工程,引用struts,服务器选择tomcat4,然后建立一个Jsp1.jsp文件,然后把lib/目录下的所有.tld文件copy到你建立的工程目录下的/defaultroot/WEB-INF/目录下面,在/defaultroot/WEB-INF/建立action.xml,内容如下:

<action-mappings>

    <forward name="logon"        path="/logon.jsp"/>

    <action    path="/logon"

      actionClass="example.LogonAction"

    formAttribute="logonForm"

        formClass="example.LogonForm"

        inputForm="/logon.jsp">

    <forward name="success"    path="/Jsp1.jsp"/>

  </action>

</action-mappings>

struts-config.xml文件,如下:

     <?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC

          "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"

          "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

<form-beans>

 <form-bean name="logonForm"type="example.LogonForm"/>

    </form-beans>

<global-forwards>

    <forward name="logon"   path="/logon.jsp"/>

</global-forwards>

<action-mappings>

 <action    path="/logon"

               type="example.LogonAction"

               name="logonForm"

              scope="request"

              input="/logon.jsp">

       <forward   name="success"              path="/Jsp1.jsp"/>

    </action>

<action    path="/admin/addFormBean"

type="org.apache.struts.actions.AddFormBeanAction"/>

    <action    path="/admin/addForward"

   type="org.apache.struts.actions.AddForwardAction"/>

    <action    path="/admin/addMapping"

type="org.apache.struts.actions.AddMappingAction"/>

    <action    path="/admin/reload"

type="org.apache.struts.actions.ReloadAction"/>

    <action    path="/admin/removeFormBean"

type="org.apache.struts.actions.RemoveFormBeanAction"/>

    <action    path="/admin/removeForward"

type="org.apache.struts.actions.RemoveForwardAction"/>

    <action    path="/admin/removeMapping"

type="org.apache.struts.actions.RemoveMappingAction"/>

  </action-mappings>

</struts-config>

然后建立logon.jsp,内容如下:

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html locale="true">
<head>
<title><bean:message key="logon.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<html:errors/>
<html:form action="/logon" focus="username">
<table border="0" width="100%">
  <tr>
    <th align="right">
      <bean:message key="prompt.username"/>
    </th>
    <td align="left">
      <html:text property="username" size="16" maxlength="16"/>
    </td>
  </tr>
  <tr>
    <th align="right">
      <bean:message key="prompt.password"/>
    </th>
    <td align="left">
      <html:password property="password" size="16" maxlength="16" redisplay="false"/>
    </td>
  </tr>
  <tr>
    <td align="right">
      <html:submit property="submit" value="Submit"/>
    </td>
    <td align="left">
      <html:reset/>
    </td>
  </tr>
</table>
</html:form>
</body>
</html:html>

然后建立一个class  LogonForm.java,继承自ActionForm,打包在example内容如下

package example;

import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class LogonForm extends ActionForm {

  private String password = null;
  private String username = null;

  public String getPassword() {
    return password;
  }
  public String getUsername() {
    return username;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  public void setUsername(String username) {
    this.username = username;
  }

  public void reset(ActionMapping mapping, HttpServletRequest request) {

        this.password = null;
        this.username = null;

    }

  public ActionErrors validate(ActionMapping mapping,
                               HttpServletRequest request) {

      ActionErrors errors = new ActionErrors();
      if ((username == null) || (username.length() < 1))
          errors.add("username", new ActionError("error.username.required"));
      if ((password == null) || (password.length() < 1))
          errors.add("password", new ActionError("error.password.required"));

      return errors;

    }
}

然后建立一个class  LogonAction.java,继承自Action,打包在example内容如下

package example;

import java.io.IOException;
import java.util.Hashtable;
import java.util.Locale;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.MessageResources;

public class LogonAction extends Action {

  public ActionForward perform(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response)
 throws IOException, ServletException {

        Locale locale = getLocale(request);
 //MessageResources messages = getResources();
        ActionErrors errors = new ActionErrors();
        String username = ((LogonForm) form).getUsername();
 String password = ((LogonForm) form).getPassword();

        // Report any errors we have discovered back to the original form
        if (!errors.empty()) {
            saveErrors(request, errors);
            return (new ActionForward(mapping.getInput()));
        }

        // Save our logged-in user in the session
        HttpSession session = request.getSession();
        session.setAttribute("user", "ok");
        if (servlet.getDebug() >= 1)
            servlet.log("LogonAction: User :"  +
                        "' logged on in session " + session.getId());

        // Remove the obsolete form bean
        if (mapping.getAttribute() != null) {
            if ("request".equals(mapping.getScope()))
                request.removeAttribute(mapping.getAttribute());
            else
                session.removeAttribute(mapping.getAttribute());
        }

        // Forward control to the specified success URI
 return (mapping.findForward("success"));


  }
}

然后修改/defaultroot/WEB-INF/web.xml文件为

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>application</param-name>
      <param-value>example.ApplicationResources</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>validate</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>debugjsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>jspCompilerPlugin</param-name>
      <param-value>com.borland.jbuilder.webserverglue.tomcat.jsp.JasperSunJavaCompiler</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>debugjsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>logon.jsp</welcome-file>
  </welcome-file-list>
  <taglib>
    <taglib-uri>/WEB-INF/app.tld</taglib-uri>
    <taglib-location>/WEB-INF/app.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
</web-app>
           最后还有一个重要的问题,就是一开始我们说过Struts-example.war,安装后把/struts-example/WEB-INF/src/org/apache/struts/webapp/ApplicationResources.properties放到/defaultroot/WEB-INF/classes/example/目录下,然后就可以运行了,当你运行jbuilder后,在IE上键入http://localhost:8080/就会看到效果了,具体的解释请参见下一 解释篇

刚开始研究struts,所以把自己的经过给大家分享,欢迎大家批评指正

struts2.5.10.1初体验-入门配置指南

struts2.5.10.1初体验-入门配置指南struts2是学习JavaWeb开发的人必须要学习的一个MVC框架,它在2017年06月10日最新的版本就是2.5.10.1,推荐使用(因为它弥补了2...
  • itmr_liu
  • itmr_liu
  • 2017年06月10日 14:00
  • 1207

【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之案例实现篇(上)

案例:开发员工管理系统        由于上一篇已经搭建了SSH开发环境,这一篇就来完成案例。过程不再赘述。        创建的项目目录为:                具体实现        J...
  • erlian1992
  • erlian1992
  • 2017年01月12日 12:10
  • 2154

软件实施工程师项目经验(转)

在项目实施的时候,有些独特的地方,需要有独特的工具来帮助。 前天晚上,和一位做了多年实施项目带领的朋友吃饭。     我笑着跟他说:实施,能不能不实施?!不去人,也不搞实施,把软件卖了就O...
  • yiluyangguang1234
  • yiluyangguang1234
  • 2014年11月04日 11:10
  • 4783

Struts2学习日志(2)初体验

安装好环境后,随便写了个测试工程... 1. eclipse新建StrutsHelloWorld工程Dynamic Web Project. 2. 导入Struts2类库,开始按照网上...
  • flaker
  • flaker
  • 2012年04月11日 20:24
  • 1778

struts2初体验

Struts2.0的创建过程: ①新建一个web项目 ②将所需要的核心jar包引入项目当中 commons-fileupload-1.2.2.jar//用于上传所需要的组件 commo...
  • yp783817212
  • yp783817212
  • 2013年01月09日 13:17
  • 268

Cocos2dx 3.0 提高篇(一) 初体验

转自:http://blog.csdn.net/start530/article/details/18052953 1、以CC开头的类从此去掉CC,如: | v2.1 | v3.0...
  • gf771115
  • gf771115
  • 2014年02月17日 10:47
  • 4276

Objective-C 初体验 –反射篇

http://zephyrleavesblog.sinaapp.com/?p=676 首页 > 技术 > Objective-C 初体验 –反射篇 Objective-C 初体...
  • qq469236803
  • qq469236803
  • 2013年09月02日 15:39
  • 721

python初体验(1)&mdash;&mdash;基础篇

我为什么学习python 首先我的工作第一语言是c/c++(面向对象子集)。选择学习python一方面是因为看很多人都说python开发效率高,所以想验证一下;另一方面,Eric S. Raymon...
  • chgaowei
  • chgaowei
  • 2011年05月29日 17:14
  • 3098

Delphi2009初体验 - IDE篇 - D2009 VS VS2005

一、启动界面,相比Delphi2007来说相对要简单。大家可以看到以前的“CodeGear From Borland”已经没有了,取而代之的是易博龙的Logo。Delphi2009启动时间比Delph...
  • QDseashore
  • QDseashore
  • 2012年07月10日 07:49
  • 692

python初体验(2)——面向对象篇

在学习python的面向对象时,我始终参照的是c++的面向对象机制。相对而言,python的面向对象确实更简单一些。 基础: 整数也被作为对象。前面就看到过,说所有的东西都是对象,包括函数。...
  • chgaowei
  • chgaowei
  • 2011年05月29日 22:59
  • 3250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts初体验之实施篇
举报原因:
原因补充:

(最多只允许输入30个字)