Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序(一)

简介:
本系列教程将详细介绍 Struts 1.x 的基本原理和使用方法,读者可以参阅Struts 2系列教程》 来比较 Struts 1.x Struts 2.x 的相同点和不同点。  
   在这篇文章中将以一个简单的例子
(mystruts) 来演示如何使用 MyEclipse 来开发、运行 Struts 程序,并给出了解决 ActionForm 出现乱码问题的方法。读者可以从本文中了解开发 Struts 1.x 程序的基本过程。

一、本文给出的程序要实现什么功能

    mystruts 是一个录入和查询产品信息的程序。为了方便起见,本例中的产品信息表只包括了产品ID 、产品名称和产品价格三个字段。mystruts 的主要功能如下:
   
1. 接受用户输入的产品ID 、产品名称和产品价格。
2.  验证这些字段的合法性。如果某些字段的输入不合法(如未输入产品ID ),程序会forward 到一个信息显示页,并显示出错原因。
3.  如果用户输入了正确的字段值,程序会将这些字段值保存到数据库中,并显示“保存成功”信息。
4.  用户输入产品名称,并根据产品名称进行模糊查询。如果存在符合要求的产品信息。程序会以表格形式显示这些产品的信息,同时显示记录数。如果未查到任何记录,会显示“没有符合要求的记录! ”信息。

二、编写程序前的准备工作

1. 建立数据库

     在编写程序之前,需要建立一个数据库( struts )和一个表 (t_products) ,建立数据库和表的 SQL 脚本如下所示:

  # 建立数据库struts
  
CREATE   DATABASE   IF   NOT   EXISTS  struts  DEFAULT   CHARACTER   SET  GBK;

  # 建立表t_products
  
CREATE   TABLE   IF   NOT   EXISTS  struts.t_products (
    product_id 
varchar ( 4 NOT   NULL ,
    product_name 
varchar ( 50 NOT   NULL ,
    price 
float   NOT   NULL ,
    
PRIMARY   KEY   (product_id)
  ) ENGINE
= InnoDB  DEFAULT  CHARSET = gbk;

建立一个支持 struts1.x samples 工程

    
MyEclipse 建立一个samples 工程(Web 工程),现在这个samples 工程还不支持Struts1.x (没有引入相应的Struts jar 包、struts-config.xml 文件以及其他和Struts 相关的配置)。然而,在MyEclipse 中这一切并不需要我们手工去加入。而只需要使用MyEclipse 的【New Struts Capabilities 】对话框就可以自动完成这些工作。
     首先选中samples 工程,然后在右键菜单中选择【MyEclipse  >  New Struts Capabilities 】,启动【New Struts Capabilities 】对话框。对默认的设置需要进行如下的改动:
(1)将Struts specification改为Struts 1.2。
(2) Base package for new classes 改为struts
(3) Default application resources 改为struts.ApplicationResources

改完后的【New Struts Capabilities 】对话框如图1 所示。


图1
    在设置完后,点击Finish 按钮关闭对话框。在向samples 工程添加支持Struts 的功能后,主要对samples 工程进行了三个操作。
1 )引入了Struts 1.2  jar 包(在samples 的工程树中多了一个Struts 1.2 Libraries 节点)。
2 )在WEB-INF 目录中添加了一个struts-config.xml 文件。文件的默认内容如下面的代码所示:
   <? xml version="1.0" encoding="UTF-8" ?>
  
<! DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" 
"http://struts.apache.org/dtds/struts-config_1_2.dtd"
>   
  
< struts-config >
    
< data-sources  />
    
< form-beans  />
    
< global-exceptions  />
    
< global-forwards  />
    
< action-mappings  />
    
< message-resources  parameter ="struts.ApplicationResources"   />
  
</ struts-config >
3 )在WEB-INF 中的web.xml 文件中添加了处理Struts 动作的ActionServlet 的配置,代码如下:
< 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 >
    
< init-param >
      
< param-name > debug </ param-name >
      
< param-value > 3 </ param-value >
    
</ init-param >
    
< init-param >
      
< param-name > detail </ param-name >
      
< param-value > 3 </ param-value >
    
</ init-param >
    
< load-on-startup > 0 </ load-on-startup >
  
</ servlet >
  
< servlet-mapping >
    
< servlet-name > action </ servlet-name >
    
< url-pattern > *.do </ url-pattern >
  
</ servlet-mapping >
     到目前为止,samples 工程已经完全支持Struts 了。读者可以看到,如果不使用MyEclipse ,那么上面所列出的配置文件的内容都必须手工输入。因此,使用MyEclipse 来开发Struts 程序可以省去很多配置xml 文件的工作。
三、实现程序的首页 (index.jsp)
     首先在<samples 工程目录> 中建立一个mystruts 目录,然后在<samples 工程目录>" mystruts 目录中建立一个index.jsp 文件,这个文件的内容如下。
   < %@ page  pageEncoding ="GBK" % >
  
< %--  引用Struts tag--% >
  
< %@ taglib  uri ="http://struts.apache.org/tags-html"  prefix ="html" % >
  
< html >
      
< head >
          
< title > 主界面 </ title >
      
</ head >
      
< body >
          
< table  align ="center"  cellpadding ="10"  width ="100%" >
              
< tr >
                  
< td  align ="right"  width ="50%" >
                  
< %--  使用Struts tag--% >
                      
< html:link  forward ="newProduct" > 录入产品信息 </ html:link >
                  
</ td >
                  
< td >
                      
< html:link  forward ="searchProduct" > 查询产品信息 </ html:link >
                  
</ td >
              
</ tr >
          
</ table >
      
</ body >
  
</ html >

     MyEclipse 中启动Tomcat (如果Tomcat 处于启动状态,在修改完配置文件后,建议在MyEclipse Servers 页重新发布samples 工程,以使修改生效)。在IE 中输入如下的URL
     我们发现在输入上面的URL 后,在IE 中并未显示正确的运行结果,而是抛出了如下的异常:
java.net.MalformedURLException: Cannot retrieve ActionForward named newProduct

    
这个异常表明程序并未找到一个叫newProduct forward forward 将在后面详细地讲述)。因此,可以断定,在JSP 中使用forward 时,这个forward 必须存在。下面我们来添加index.jsp 页面中所使用的两个forward newProduct searchProduct 。这两个forward 分别引向了建立产品信息的页面(newProduct.jsp) 和查询产品信息的页面(searchProduct.jsp) 。我们可以在struts-config.xml 文件中<struts-config> 节点中添加两个全局的forward ,代码如下:
   < global-forwards >
      < forward  name ="newProduct"  path ="/mystruts/newProduct.jsp"   />
      < forward  name ="searchProduct"  path ="/mystruts/searchProduct.jsp"   />
</ global-forwards >
     上面的代码中所示的newProduct.jsp searchProduct.jsp 目前并不存在(将在以后实现这两个JSP 页面),现在重新输入上述的URL ,会得到如图2 所示的效果。


图2
     如果想让index.jsp 成为默认的JSP 页面,可以在web.xml 中的<welcome-file-list> 节点中加入如下的内容:
  < welcome-file > index.jsp </ welcome-file >
     这时在IE 中只要输入如下的URL 就可以访问index.jsp 页面了。
四、实现添加和查询产品信息页面

    
在本节中主要实现了用于输入产品信息(newProduct.jsp )和查询产品信息(searchProduct.jsp) JSP 页面。
     newProduct.jsp 页面中有一个form ,在form 中含有三个文本框,用于分别输入产品ID 、产品名称和产品价格。
<samples 工程目录>"mystruts 目录中建立一个newProduct.jsp 文件,代码如下:
   <% @ page pageEncoding = " GBK " %>
  
<% @ taglib uri = " http://struts.apache.org/tags-html "  prefix = " html " %>
  
< html >
      
< head >
          
< title > 录入产品信息 </ title >
      
</ head >
      
< body >
          
<% --  向saveProduct动作提交产品信息  -- %>
          
< html:form  action ="saveProduct" >  
              
< table  width ="100%" >
                  
< tr >
                      
< td  align ="center" >
                          产品编号:
                          
< html:text  property ="productID"  maxlength ="4"   />
                          
< p >
                              产品名称:
                              
< html:text  property ="productName"   />
                          
< p >
  
                              产品价格:
                              
< html:text  property ="price"   />
                      
</ td >
                  
</ tr >
                  
< tr >
                      
< td  align ="center" >
                          
< br >
                          
< html:submit  value =" 保存 "   />
                      
</ td >
                  
</ tr >
              
</ table >
          
</ html:form >
      
</ body >
  
</ html >
     searchProduct.jsp 页面中有一个 form ,为了方便起见,在 form 中只提供了一个文本框用于对产品名称进行模糊查询。在 <samples 工程目录 >" mystruts 目录中建立一个 searchProduct.jsp 文件,代码如下:
   <% @ page pageEncoding = " GBK " %>
  
<% @ taglib uri = " http://struts.apache.org/tags-html "  prefix = " html " %>
  
< html >
      
< head >
          
< title > 查询产品信息 </ title >
      
</ head >
      
< body >
          
<% --   向searchProduct动作提交查询请求  -- %>
          
< html:form  action ="searchProduct" >
              
< table  width ="100%" >
                  
< tr >
                      
< td  align ="center" >
                          产品名称:
                          
< html:text  property ="productName"   />
                      
</ td >
                  
</ tr >
                  
< tr >
                      
< td  align ="center" >
                          
< br >
                          
< html:submit  value =" 查询 "   />
                      
</ td >
                  
</ tr >
              
</ table >
          
</ html:form >
      
</ body >
  
</ html >

     现在启动Tomcat ,并使用如下两个URL 来访问newProduct.jsp searchProduct.jsp
IE 中输入上面的两个URL 后,并不能显示出相应的界面,而会抛出 JspException 异常,表明未找到 saveProduct searchProduct 动作。从这一点可以看出,如果在 JSP 中使用 Struts Action ,这些 Action 必须事先在 struts-config.xml 文件中定义,否则, JSP 程序就无法正常访问。在这两个页面所使用的动作( saveProduct searchProduct )将会在下面的部分介绍。





 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215247 ,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
183 1
|
6月前
|
Java 关系型数据库 MySQL
JSP考试报名管理系统myeclipse开发mysql数据库bs框架java编程web网页结构
二、功能介绍 (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行添加、删除、修改和查看 (3)公告管理:对公告信息进行添加、删除、修改和查看 (4)考试科目管理:对考试科目信息进行添加、删除、修改和查看 (5)考试安排管理:对考试安排信息进行添加、删除、修改和查看 (6)报名管理:对报名信息进行添加、删除、修改和查看,审核, (7)用户登录、身份验证 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件DBO.java 角色:普通用户,管理员 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql
107 0
|
6月前
|
Java 关系型数据库 MySQL
JSP在线客户服务支持管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 在线客户服务支持管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
40 0
|
6月前
|
Java 关系型数据库 MySQL
JSP 科研管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 科研管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。系统主要采用B/S模式开发。
36 0
|
6月前
|
Java 关系型数据库 MySQL
JSP实践教学平台系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 实践教学平台系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,数据库文件名是jspskcsjpt.sql,系统名称kcsjpt,使用java语言开发系统主要采用B/S模式开发。
53 0
|
6月前
|
Java 数据库连接 数据库
JSP奖学金管理系统myeclipse开发sqlserver数据库bs框架java编程jdbc
JSP 奖学金管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
35 0
|
6月前
|
SQL Java 数据库连接
JSP商品进出库管理系统myeclipse开发sql数据库bs框架java编程jdbc
JSP 商品进出库管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
51 0
|
6月前
|
SQL Java 数据库连接
JSP婚纱影楼管理系统myeclipse开发sql数据库bs框架java编程jdbc
JSP 婚纱影楼管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
51 0
|
6月前
|
Java 关系型数据库 MySQL
JSP学生交流论坛系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 学生交流论坛系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,言开发系统主要采用B/S模式开发。 https://www.bilibili.com/video/BV1jB4y1q7Ut?spm_id_from=333.999.0.0
72 0
|
6月前
|
SQL Java 数据库连接
JSP网上相亲交友系统myeclipse开发sql数据库bs框架java编程jdbc
JSP 网上相亲交友系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为sqlserver2008,使用java语言开发,系统主要采用B/S模式开发。
69 0