手把手struts入门示例

读书不求甚解,遇到不懂的先不用管它,照着指示做就行了。所谓实践出真知,做完不用我解析,你自己都会明白的。让我们先把它运行起来,培养点成就感再说。要不没有动力。
开发环境:
Tomcat  5.5
struts 1.3.8
SDK j2sdk 1.5
关于环境的配置可以参考我另外一篇文章《超简单配置Tomcat+struts》

我们要做的是一个简单的加法器,就是求1+1等于多少的。我们先看看效果图,所谓胸有成竹,心里有了成功后的形象才有明确的奋斗方向。

我们先来看看传统的JSP实现方法add.jsp

<% @ page contentType = " text/html; charset=Shift_JIS "   %>

    
<%!
      
private   int  atoi(String str)  {
        
int ret = 0;
        
try {
          ret 
= Integer.parseInt(str);
        }

        
catch (NumberFormatException ex) {/* Intentionally left blank */}
        
return ret;
      }


      
private   int  add( int  i1,  int  i2)  {
        
return i1 + i2;
      }

    
%>
    
<%
      String parm1 
=  request.getParameter( " parm1 " );
      String parm2 
=  request.getParameter( " parm2 " );
      
if  (parm1  !=   null   &&  parm2  !=   null {
        
int i1 = atoi(parm1);
        
int i2 = atoi(parm2);
    
%>
        
<H2><%=i1%>+<%=i2%>=<%=add(i1, i2)%></H2>
    
<%
      }

    
%>

    
< FORM action = " add.jsp " >
      
< INPUT TYPE = " TEXT "  NAME = " parm1 "  SIZE = 6 ></ input >+
      
< INPUT TYPE = " TEXT "  NAME = " parm2 "  SIZE = 6 ></ input >
      
< INPUT TYPE = " SUBMIT "  VALUE = " = " >
    
</ FORM >

在浏览器中访问http://localhost:8080/add.jsp   看到我们要实现的效果了吧,ps:开始有一点成就感了吧。

struts是mvs结构,为了简单起见,我们省略掉M,直接把业务逻辑写进C中,
我们需要准备的文件有:
jsp文件:     ①index.jsp  ②queryForm.jsp  ③showResult.jsp
Controller:  ①AddSampleQueryForm.java  ②AddSampleAction.java

<!--  index.jsp  -->
<% @ page contentType="text/html; charset=Shift_JIS"  %>

< HTML >
  
< BODY >
    
< jsp:include  page ="include/queryForm.jsp"  flush ="false" />
  
</ BODY >
</ HTML >
<!--  queryForm.jsp  -->
<% @ taglib uri="http://struts.apache.org/tags-html" prefix="html"  %>
<%-- struts1.1以下是uri="/tags/struts-html" -->

< html:form  action ="/add"  focus ="parm1" >
  
< html:text  property ="parm1"  size ="6" /> +
  
< html:text  property ="parm2"  size ="6" />
  
< html:submit  property ="submit"  value ="=" />
</ html:form >
<!--  showResult.jsp  -->
<% @ page contentType="text/html; charset=Shift_JIS"  %>
<% @ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"  %>
<%-- struts1.1以下是uri="tags/struts-bean" -->
< HTML >
  
< BODY >
    
< H2 >
      
< bean:write  name ="QueryForm"  property ="parm1"  scope ="request" /> +
      
< bean:write  name ="QueryForm"  property ="parm2"  scope ="request" /> =
      
< bean:write  name ="QueryForm"  property ="result"  scope ="request" />
    
</ H2 >
    
< jsp:include  page ="include/queryForm.jsp"  flush ="true" />
  
</ BODY >
</ HTML >
// AddSampleQueryForm.java
package  samples.add;

import  org.apache.struts.action.ActionForm;

public   class  AddSampleQueryForm  extends  ActionForm ... {
    
private String parm1;
    
private String parm2;
    
private String result;

    
public String getParm1() ...{
        
return parm1;
    }


    
public void setParm1(String parm1) ...{
        
this.parm1 = parm1;
    }


    
public void setParm2(String parm2) ...{
        
this.parm2 = parm2;
    }


    
public String getParm2() ...{
        
return parm2;
    }


    
public String getResult() ...{
        
return result;
    }


    
public void setResult(String result) ...{
        
this.result = result;
    }

}

// AddSampleAction.java
package  samples.add;

import  org.apache.struts.action.Action;
import  org.apache.struts.action.ActionMapping;
import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionForward;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
// 如果怕麻烦的话,可以只写下面两句,
// import org.apache.struts.action.*;
// import javax.servlet.http.*;
// 上面的写法是让我们清楚知道我们具体需要什么东西

public   class  AddSampleAction  extends  Action  {
    
public ActionForward execute(ActionMapping mapping,
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
    
{
        AddSampleQueryForm queryForm 
= (AddSampleQueryForm)form;
        
int parm1 = Integer.parseInt(queryForm.getParm1());
        
int parm2 = Integer.parseInt(queryForm.getParm2());
        
int result = parm1 + parm2 ;
        queryForm.setResult(String.valueOf(result));
        
return mapping.findForward("success");
    }

}

编译:
javac -classpath "C:/.../apache-tomcat-5.5.12/common/lib/servlet-api.jar";"H:/.../struts-1.3.8/lib/struts-core-1.3.8.jar";. *.java
生成AddSampleQueryForm.class AddSampleAction.class

tomcat 5.0以上的servlet 类库是servlet-api.jar ,5.0以下是servlet.jar
struts1.3.8的类库是struts-core-1.3.8.jar,1.1的话是struts.jar

配置:
struts-1.3.8/lib/下有一个struts-blank-1.3.8.war,把它拷贝到apache-tomcat-5.5.12/webapps/下就会自动解压,生成apache-tomcat-5.5.12文件夹(或者使用解压软件如Lhaplus),我们可以把文件的名字改成我们想要的名字,在这里我们改成add(需要把tomcat停止才能改名字),然后把我们把我们编写的文件配置进去。最后我们的目录是这样的:
add

│  index.jsp
│  showResult.jsp
│ 
├─include
│      queryForm.jsp
│     
├─META-INF
│  │  MANIFEST.MF
│  │ 
│  └─maven
│      └─org.apache.struts
│          └─struts-blank
│                  pom.properties
│                  pom.xml
│                 
├─pages
│      Welcome.jsp
│     
└─WEB-INF
    │  struts-config.xml
    │  validation.xml
    │  web.xml
    │ 
    ├─classes
    │  │  MessageResources.properties
    │  │ 
    │  └─samples
    │      └─add

    │              AddSampleAction.class
    │              AddSampleQueryForm.class
    │             
    ├─lib
    │      antlr-2.7.2.jar
    │      commons-beanutils-1.7.0.jar
    │      commons-chain-1.1.jar
    │      commons-digester-1.8.jar
    │      commons-logging-1.0.4.jar
    │      commons-validator-1.3.1.jar
    │      oro-2.0.8.jar
    │      struts-core-1.3.8.jar
    │      struts-taglib-1.3.8.jar
    │      struts-tiles-1.3.8.jar
    │     
    └─src
        │  build.xml
        │  README.txt
        │ 
        └─java
                MessageResources.properties

我们还需要修改一下struts-config.xml
找到<form-beans>... ...</form-beans> <action-mappings>... ...</action-mappings>,添加
      <form-bean name="QueryForm" type="samples.add.AddSampleQueryForm"/>

      <action path="/add" type="samples.add.AddSampleAction" name="QueryForm"
       scope="request" validate="false">
          <forward name="success" path="/showResult.jsp"/>
      </action>

添加我们的配置后,效果如下

跟我走到这里不容易啊,我们很快就可以看见我们的成果了。
访问http://localhost:8080/add
大功告成!功德无量!(不行的话重起一下tomcat和浏览器,还不行?你把问题写下来,有时间的我会回复的。)

...
< struts-config >
...
    
< form-beans >
      
< form-bean  name ="QueryForm"  type ="samples.add.AddSampleQueryForm" />
...
    
</ form-beans >
...
    
< action-mappings >
      
< action  path ="/add"  type ="samples.add.AddSampleAction"  name ="QueryForm"
       scope
="request"  validate ="false" >
          
< forward  name ="success"  path ="/showResult.jsp" />
      
</ action >
...
    
</ action-mappings >
...
</ struts-config >

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值