开发者社区> 技术小胖子> 正文

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

简介:
+关注继续查看
本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅Struts 2系列教程》来比较Struts 1.xStruts 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(4NOT NULL,
    product_name 
varchar(50NOT NULL,
    price 
float NOT NULL,
    
PRIMARY KEY  (product_id)
  ) ENGINE
=InnoDB DEFAULT CHARSET=gbk;

建立一个支持struts1.xsamples工程

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

    
这个异常表明程序并未找到一个叫newProductforwardforward将在后面详细地讲述)。因此,可以断定,在JSP中使用forward时,这个forward必须存在。下面我们来添加index.jsp页面中所使用的两个forwardnewProductsearchProduct。这两个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.jspsearchProduct.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.jspsearchProduct.jsp
IE中输入上面的两个URL后,并不能显示出相应的界面,而会抛出JspException异常,表明未找到saveProductsearchProduct动作。从这一点可以看出,如果在JSP中使用Struts Action,这些Action必须事先在struts-config.xml文件中定义,否则,JSP程序就无法正常访问。在这两个页面所使用的动作(saveProductsearchProduct)将会在下面的部分介绍。





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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MyEclipse 2013 开发WebService
1.在Package Explorer窗口右键File新建WebService Project项目,我的名称为:TestWebService 2.WebService Framework选择JAX-WS,Target Runtime选择tomcat,下面的跟创建普通的Web Project一样点击Next到创建完成。
738 0
【java开发系列】—— struts2简单入门示例
原文:【java开发系列】—— struts2简单入门示例 上篇推荐:JDK安装 前言   最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的。
927 0
Linux (x86) Exploit 开发系列教程之九 使用 unlink 的堆溢出
使用 unlink 的堆溢出 译者:飞龙 原文:Heap overflow using unlink 预备条件: 理解 glibc malloc 这篇文章中,让我们了解如何使用 unlink 技巧成功利用堆溢出。
1008 0
Linux (x86) Exploit 开发系列教程之八 绕过 ASLR -- 第三部分
绕过 ASLR – 第三部分 译者:飞龙 原文:Bypassing ASLR – Part III 预备条件: 经典的基于栈的溢出 绕过 ASLR – 第一部分 VM 配置:Ubuntu 12.04 (x86) 在这篇文章中,让我们看看如何使用 GOT 覆盖和解引用技巧。
1124 0
21117
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载