`
nakupanda
  • 浏览: 416810 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

手工安装、配置、编译和运行struts应用(struts1)

    博客分类:
  • java
阅读更多
原文时间:2007-10-11


昨天拿起副班长的一本JSP书,复习了一下Struts基础才发现自己把东西忘记得很干净,同时也发现那本<JSP网络编程技术与实例>有关Struts那部分存在不少问题(实际上是很多问题,包括配置和编译问题,语法错误问题等等,我相当怀疑书上的例子是闭上眼乱敲上去的,CD里的另论),如果从空白跟着那章书一步一步地做我想写个helloworld也是相当困难。为让副班长以后少走弯路挤出更多时间为逃课的同学服务,我将该书有关Struts那部分的例子修正了一下并写下来。

使用IDE很方便没错,但那是生产时的事情,学习始终从细节开始比较好,在遇上问题而不知原因的时候再花时间去研究投资可能更大。

往下阅读之前,确定你的tomcat已能正常运行使用,这就是说,你的JDK没有问题,TOMCAT也没有问题。

一、下载Struts和建立编译运行Struts的环境
下载页面:http://struts.apache.org/downloads.html
选择你需要的版本,我使用的是Struts 1.3.8,不建议下载较旧的版本,因为有些特性已改动较大或者废除。

解压下载完的ZIP文件,得到一堆.jar文件,将他们复制到你运行JSP/Servlet的TOMCAT目录的WEB-INF/lib(注意大小写)目录下,如果没有WEB-INF/lib目录请新建一个并把Struts的.jar文件复制到该目录。请确保你的WEB-INF/目录下存在lib和classes目录,如果不存在请建立相应的目录。

至此,编译和运行Struts的准备工作其实已经做好了。

二、编写、编译一个最简单的Struts例子
我希望你能将MVC想像成一部电视机,你按下频道按钮(控制器),屏幕(视图)就会显示你想看的频道信号(模型)的图像。屏幕(视图)能将频道的视频信号(模型)转化成我们喜欢的图像,我们想看哪个频道(模型)要通过按钮(控制器)选择,然后就可以从屏幕(视图)上看到了。

本例是一个验证输入用户名和密码的程序,模型是代表一个账号(含有用户名和密码)的JavaBean,控制器本质上是一个Servlet,负责验证用户名和密码并转向有关页面,视图是3个JSP文件和一个代表输入表单的JavaBean,负责提供输入界面、验证成功和验证失败时要显示的页面和封装表单数据(什么是封装表单数据不用理会,只要知道点击了提交按钮后我们可以从这个代表输入表单的JavaBean中拿到表单的数据就行了),还有一个简单的消息资源文件,用于提供一些文字信息,例如网页的标题,用户名输入框前面的“用户名”之类的文字。

1、模型
在WEB-INF/classes下建立目录login,再在login下建立目录model,在model目录中新建一个名为AccountBean.java的文件,内容如下:

package login.model;

public class AccountBean
{
 private String userName;
 private String password;
 
 public String getUserName()
 {
  return userName;
 }
 public void setUserName(String userName)
 {
  this.userName = userName;
 }
 
 public String getPassword()
 {
  return password;
 }
 public void setPassword(String password)
 {
  this.password = password;
 }
 
 
}




假设AccountBean.java位于e:\struts\WEB-INF\classes\login\model下,打开windows的命令行模式,键入:javac e:\struts\WEB-INF\classes\login\model\AccountBean.java 然后回车,如无意外编译完成后model目录中会增加一个AccountBean.class文件。

2、视图
a、输入页面 login.jsp
在主目录(如果刚才模型位于e:\struts\WEB-INF\classes\login\model下,那么.jsp文件就放在e:\struts下,其实放在classes下也没所谓,不过不能直接请求)新建一个名为login.jsp的文件,内容如下:
<%@ page language="java"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<html>
 <head>
  <title>
    <bean:message key="login.jsp.title" />   
  </title>
 </head>
 <body>
  <html:form action="/login">
   <bean:message key="login.jsp.username" />
   <html:text property="userName" />
   <html:errors property="userName" /> <br />
   <bean:message key="login.jsp.password" />
   <html:password property="password" />
   <html:errors property="password" /> <br />
   <html:submit /> <html:cancel />
  </html:form>
 </body>

</html>





b、验证成功页面 success.jsp

在login.jsp相同的目录中新建success.jsp,内容如下:

验证成功的页面



c、验证失败页面 fail.jsp

在login.jsp相同的目录中新建fail.jsp,内容如下:

验证失败的页面



d、代表输入表单的JavaBean   LoginForm.java

在WEB-INF/classes/login目录下建立目录form,再在form目录下建立名为LoginForm.java的文件,内容如下:

package login.form;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
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.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class LoginForm extends ActionForm
{
 private String userName;
 private String password;
 
 public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)
 {
  ActionErrors errors = new ActionErrors();
  if(userName==null||userName.length()<1)
   errors.add("userName",new ActionMessage("login.jsp.no.name.error"));
  if(password==null||password.length()<1)
   errors.add("password",new ActionMessage("login.jsp.no.password.error"));
  
  return errors;
 }
 
 public void reset(ActionMapping mapping,HttpServletRequest request)
 {
  userName=null;
  password=null;
 }
 
 public String getUserName()
 {
  return userName;
 }
 public void setUserName(String userName)
 {
  this.userName=userName;
 }
 
 public String getPassword()
 {
  return password;
 }
 public void setPassword(String password)
 {
  this.password=password;
 } 
 

 
}





手工编译这个文件有点麻烦,需要指定classpath,当然如果你成功将Servlet和Struts加入系统环境变量中可以省去classpath。

假设TOMCAT的主目录是e:\tomcat,LoginForm.java位于e:\struts\WEB-INF\classes\login\form下,打开windows的命令行模式,键入:javac -classpath e:\tomcat\lib\servlet-api.jar;e:\struts\WEB-INF\lib\struts-core-1.3.8.jar e:\struts\WEB-INF\classes\login\form\LoginForm.java 然后回车,如无意外编译完成后form目录中会增加一个LoginForm.class文件。



3、控制器

在WEB-INF/classes/login目录下建立目录action,再在action目录下建立名为LoginAction.java的文件,内容如下:

package login.action;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
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.ActionMessage;
import org.apache.struts.action.ActionMessages;
import login.form.LoginForm;
import login.model.AccountBean;


public class LoginAction extends Action
{
 public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
 {
  LoginForm loginForm = (LoginForm)form;
  
  AccountBean ab=new AccountBean();
  String userName=(String)loginForm.getUserName();
  String password=(String)loginForm.getPassword();
  ab.setUserName(userName);
  ab.setPassword(password);

  if(userName.equals("admin")&&password.equals("admin"))
   return mapping.findForward("success");
  else
   return mapping.findForward("fail");
 }
}





假设路径信息如上例,打开windows的命令行模式,键入:javac -classpath e:\tomcat\lib\servlet-api.jar;e:\struts\WEB-INF\lib\struts-core-1.3.8.jar;e:\struts\WEB-INF\classes e:\struts\WEB-INF\classes\login\action\LoginAction.java 然后回车



4、消息资源文件

在WEB-INF/classes/login下建立一个名为ApplicationResources.properties的文件,内容如下:

login.jsp.error.no.name = no name
login.jsp.error.no.password = no password
login.jsp.error.wrong.account = wrong account input

login.jsp.title = struts test
login.jsp.username = UserName:
login.jsp.password = Password:




三、运行这个最简单的Struts例子

在WEB-INF目录下新建一个名为web.xml文件(如果存在则修改),内容如下:

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


  <!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>
  <display-name>www.badboy.net.cn</display-name>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
 </servlet>


  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>


  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>

</web-app>






再在WEB-INF目录下新建一个名为struts-config.xml的文件(如果存在则修改),内容如下:

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


<!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="loginForm" type="login.form.LoginForm"/>


    </form-beans>



    <global-exceptions />




    <global-forwards />



    <action-mappings>

        <action
   attribute="loginForm"
   input="/login.jsp"
   name="loginForm"
            path="/login"
   scope="request"
   validate="true"
   type="login.action.LoginAction" >
  
   <forward name="success" path="/welcome.jsp" />
   <forward name="fail" path="/fail.jsp" />
  
  </action>

 

    </action-mappings>



    <message-resources parameter="login.ApplicationResources" />


</struts-config>









一切都准备好了,现在重启你的TOMCAT,输入相应的路径访问 /login.jsp .
分享到:
评论

相关推荐

    徒手配置Struts2

    ### 徒手配置Struts2的关键知识点 #### 一、徒手配置Struts2环境时需注意的关键事项 ...此外,通过深入理解配置文件的每一个元素,可以帮助开发者更好地掌握Struts2的工作原理,从而提高应用程序的开发效率和质量。

    Eclipse struts2.0可视化开发组件

    Struts2.0是一个用于Java EE平台的开源Web应用程序框架,是Struts1.x的升级版。它采用了MVC(Model-View-Controller)设计模式,简化了Web应用的开发和维护工作。 **主要特点:** 1. **MVC设计模式:** 将业务逻辑...

    MyEclips 6.5完整版

    - JDK的下载、安装和环境变量配置,使Java开发者可以在IDE中顺利编译和运行Java代码; - 服务器的安装配置,如Tomcat和JBoss,它们对于Web应用程序的开发和测试至关重要; - 数据库的安装配置,这里以MySQL5为例...

    maven聚合web工程--struts2+spring

    学习Maven的生命周期、插件管理和配置,以及Struts2和Spring的原理和实践,将有助于提升开发者在企业级应用开发中的效率和能力。同时,了解如何自动化部署到Tomcat或其他应用服务器,也是现代开发流程中不可或缺的一...

    Maven+spring+ struts2+ Ibatis+mysql整合增删改查

    Struts2的配置文件struts.xml中,定义Action类和结果映射。最后,Ibatis的配置文件sqlMapConfig.xml中,包含SQL映射信息。 总的来说,这个组合提供了完整的Web应用程序解决方案,从项目构建到数据库操作,涵盖了...

    ant 小例子ant 小例子

    Ant是Apache软件基金会Jakarta项目的一个子项目,它是一个基于Java的构建工具,用来替代Java应用程序的构建过程中手工执行Java编译、测试、部署等步骤。Ant使用XML来描述构建过程,这使得构建脚本独立于开发环境,...

    MyEclipse Java 开发中文教程.pdf

    1. JDK的下载、安装和配置 - 从官方网站下载JDK并安装。 - 配置环境变量,使JDK能够被系统识别。 - 下载中文文档以方便查阅JDK相关资料。 2. 服务器的下载、安装和运行 - 选择合适的Tomcat、JBoss等服务器,并...

    《MyEclipse 6 Java 开发中文教程》前10章

    1.5.1 MySQL 5 官方版本的下载和安装,运行 32 1.5.2 MySQL 5绿色版的下载安装和运行 32 1.5.2.1 下载 32 1.5.2.2 用法图解 33 1.6 Eclipse 3.3的下载,安装和运行 35 1.7 MyEclipse 6的下载,安装和运行 37 1.7.1...

    myeclipse 的中文

    接着,作者通过实例引导读者开发第一个Java应用程序,无论是手工编写、编译运行Java程序,还是使用Eclipse/MyEclipse来编写、编译并运行Java程序,都是为了让读者了解Java程序的基本运行过程。这部分内容主要帮助...

    J2EE开发必备知识手册

    1. **环境搭建**: 包括JDK、Tomcat、JBoss和MySQL等服务器软件的下载、安装和配置流程。这是进行任何Java Web应用开发的基础。 2. **集成开发环境(IDE)的选择**: Eclipse 和 MyEclipse 的安装与使用,特别是 ...

    struts2 sping hibernate 部署到weblogic8.1.6上所需要jar包

    目前在将struts2部署到weblogic8.1.6的时候,总会提示很多莫名其妙的错误,后来经过查找时因为struts2是需要jdk1.5的,但是weblogic是使用的是1.4,所以在使用的时候需要将struts2和相关的jar文件用jdk1.4编译一下。...

    myeclipse6使用教程

    - **手工和自动编译:** 手动触发编译任务或设置自动编译选项。 - **直接粘贴 Java 源码为类文件:** 快速创建类文件的方法。 - **复制项目中的文件:** 复制文件至项目中的其他位置。 - **断点和调试器:** 使用断点...

    myeclipse6 java 中文开发教程

    - **Tomcat服务器的下载、安装和运行**:提供了Tomcat的安装指南及其运行方式。 - **JBoss服务器的下载、安装和运行**:介绍了JBoss的安装流程与启动方法。 - **MySQL 5 数据库服务器下载、安装和运行** - **MySQL ...

Global site tag (gtag.js) - Google Analytics