struts1 开发流程

struts1的工作流程 struts1的工作流程,初学者不错的资源 立即下载
使用一个简单的例子记录struts1开发过程。

0、 描述

主要功能描述:
index界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面.
newProduct.jsp是录入的界面,searchProduct.jsp是查询列表的界面。
ProductAction.java是处理逻辑的action

简单描述流程图:


1、 构建环境

在Myeclipse中,新建一个工程StrutsTest,选择该工程,右键Myeclipse->add sruts capapibality,弹出界面,选择struts1.2支持。如下图所示:

添加完struts支持后,lib目录下会增添struts的jar包、增添struts的配置文件:/WEB-INF/struts-config.xml、同时在web.xml中增添了struts的配置。

3、 代码编写

1)  创建表结构,只有三个字段

create table t_product
(
  product_id varchar2(4) primary key,
  product_name  varchar2(50) not null,
  price float
);
2) 创建工具类Util.java,从数据库连接池中获得连接。需要两个步骤
第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,context.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
 <Resource
      auth="Container"
      name="jdbc/StrutsTestPool"
      type="javax.sql.DataSource"      
      driverClassName="oracle.jdbc.driver.OracleDriver"
	  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
      username="apps"
      password="apps"      
      maxActive="20"/>
</Context>
第二步:在util类中读取配置获得连接,util.java如下:

package com.company.struts.util;
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class Util {
	/**
	 * 通过连接池得到连接
	 * @return
	 * @throws Exception
	 */
	public static Connection getPoolConnection() throws Exception{
		Context ctx = new InitialContext();
		DataSource ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/StrutsTestPool");
		Connection conn = ds.getConnection();
		return conn;
	}
}

3) 创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml配置中内容。EncodingFilter.java的内容如下:

package com.company.struts.util;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding("UTF-8");
		chain.doFilter(request, response);

	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

}
4) 修改web.xml,指定首页为index.jsp。文件内容如下:最后定义了一个fileld的过滤器,是用来过滤字符编码的,后面会提到。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <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>*.action</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 自定义的fileld 用来过滤字符编码 -->
  <filter>
  	<filter-name>EncodingFilter</filter-name>
  	<filter-class>com.company.struts.util.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>EncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
5) 在WebRoot下打开index.jsp,去掉无用信息,写代码如下:

<%@ page language="java"  pageEncoding="UTF-8"%>
<html>
  <head> 
    <title></title>
  </head>
  
  <body>
  <br>
  <br>
  <br>
  	<table width = "500px" align = "center" height = "200px">
  		<tr><td>
  		<a href = "productAction.action?method=viewAddForm" target="black">input</a> <br /><br />
  		<a href = "productAction.action?method=query" target="black">search</a>
  		</td></tr>
	</table>  	
  </body>
</html>
6) index.jsp中提到productAction.action?method=viewAddForm,需要在struts的配置文件struts-config.xml中配置实现的action,如下所示:
<?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>
  	<form-bean name="productForm" type="com.company.struts.vo.ProductVo" />
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings>
  	<action path="/productAction" type="com.company.struts.action.ProductAction" parameter = "method" scope="request" name="productForm">
  		<forward name="viewNewProduct" path="/newProduct.jsp"></forward>
  		<forward name="viewSearchProduct" path="/searchProduct.jsp"></forward>
  	</action>
  </action-mappings>
  <message-resources parameter="com.company.struts.ApplicationResources" />
</struts-config>
在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form: productForm
7) Action处理类ProductAction.java如下:
package com.company.struts.action;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

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

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.company.struts.util.Util;
import com.company.struts.vo.ProductVo;

public class ProductAction extends DispatchAction {

	/**
	 * 转到新增界面
	 */
	public ActionForward viewAddForm(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		return mapping.findForward("viewNewProduct");
	}
	/**
	 * 转到查询界面
	 */
	public ActionForward viewSearchForm(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		return mapping.findForward("viewSearchProduct");
	}

<span style="white-space:pre">	</span>/**
	 * 保存
	 */
	public ActionForward save(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String msg = "SUCCESS";
		ProductVo vo = (ProductVo)form;
		String validateResult = validate(vo);
		if(validateResult != ""){
			msg = validateResult;
		}else{
			Connection conn = null;
			PreparedStatement psmt = null;
			try {
				conn = Util.getPoolConnection();
				String sql = "insert into t_product(product_id,product_name,price) values" +
						"('"+vo.getProductId()+"','"+vo.getProductName()+"','"+Float.parseFloat(vo.getPrice())+"')";
				psmt = conn.prepareStatement(sql);
				psmt.executeUpdate();
			} catch (Exception e) {
				e.printStackTrace();
				msg = e.getMessage();
			} finally{
				if(psmt != null){
					psmt.close();
				}
				if(conn != null){
					conn.close();
				}
			}
		}
		
		request.setAttribute("error", msg);
		return mapping.findForward("viewNewProduct");
	}

<span style="white-space:pre">	</span>/**
	 *查询数据
	 */
	public ActionForward query(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String projectName = request.getParameter("queryTitle")== null?"":request.getParameter("queryTitle");
		Connection conn = null;
		PreparedStatement psmt = null;
		ResultSet rs = null;
		List<ProductVo> list = new ArrayList<ProductVo>();
		try{
			String sql = "select product_id,product_name,price from t_product where product_name like '%"+projectName+"%' order by product_id desc";
			conn = Util.getPoolConnection();
			psmt = conn.prepareStatement(sql);
			rs = psmt.executeQuery(sql);
			while(rs.next()){
				ProductVo vo = new ProductVo();
				vo.setProductId(rs.getString("product_id"));
				vo.setProductName(rs.getString("product_name"));
				vo.setPrice(rs.getString("price"));
				list.add(vo);
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(psmt != null){
				psmt.close();
			}
			if(conn != null){
				conn.close();
			}
		}
		
		request.setAttribute("List", list);
		return mapping.findForward("viewSearchProduct");

	} 

}

<span style="white-space:pre">	</span>/**
	 * 上传数据校验
	 */
	public String validate(ProductVo vo){
		String returnStr = "";
		if(vo == null){
			returnStr = "不能传递空值";
		}else{
			if(vo.getProductId() == null || vo.getProductId() == "" 
			|| vo.getProductName() == null || vo.getProductName() == ""
			|| vo.getPrice() == null || vo.getPrice() == ""){
				returnStr = "值不能为空";
			}
		}
		
		return returnStr;
		
	}
8)  保存数据的form,ProductVo如下所示:
package com.company.struts.vo;
import org.apache.struts.action.ActionForm;
public class ProductVo extends ActionForm {
	private static final long serialVersionUID = 1L;
	private String productId;
	private String productName;	
	private String price;
	public String getProductId() {
		return productId;
	}
	public void setProductId(String productId) {
		this.productId = productId;
	}
	public String getProductName() {
		return productName;
	}
	public void setProductName(String productName) {
		this.productName = productName;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
}
9)  newProduct.jsp是录入界面,代码如下:
<%@ page language="java"  pageEncoding="UTF-8"%>
<html>
  <head> <title></title> </head>
  <body>
  <!-- 读取request中的error信息,如果第一次进入,则为null,不弹出框,非首次则根据action判断的结果,弹出不同提示框 -->
	<script type="text/javascript">
		<%
		  Object msg = request.getAttribute("error");
		  if(msg != null){
		  	  String temp = msg.toString();
			  if(!temp.equals("SUCCESS")){
			     String err = "保存失败!原因:"+temp;
			  	%>
			  	alert("<%=err%>");
			  	<%
			  }else{
			  	%>
			  	alert("保存成功!");
			  	<%
			  }
		   }
		  %>
	</script>
<form action="productAction.action?method=save" name = "newForm" id = "newForm" method = "post">
  		<table width = "500px" align = "center" height = "500px">
	  		<tr>
	  			<td>  
	  				ppprocuctID:  
	  			</td>
	  			<td>
	  				<input type = "text" name = "productId" id = "productId" />
	  			</td>
	  		</tr>
	  		<tr>
	  			<td> 
	  				pprocuctName: 
	  			</td>
	  			<td>
	  				<input type = "text" name = "productName" id = "productName" />
	  			</td>
	  		</tr>

			<tr>
	  			<td> 
	  				price: 
	  			</td>
	  			<td>
	  				<input type = "text" name = "price" id = "price" />
	  			</td>
	  		</tr>
	  		<tr>
	  			<td>
	  				<input type = "submit" value = "summit" />
	  			</td>
	  		</tr>
		</table>
  	</form>  	
  </body>
</html>
10)  searchProduct.jsp是查询结果界面,代码如下:
<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@page import="com.company.struts.vo.ProductVo"%>
<html>
  <head> 
    <title></title>
  </head>
  
  <body>
  	<form action="productAction.action?method=query" name = "searchForm" id = "searchForm" method = "post">
  		<table width = "500px" align = "center">
	  		<tr>
	  			<td>  
	  				<input type = "text" name = "queryTitle" id = "queryTitle" />
	  				<input type = "submit" name = "submit" id = "submit" value = "submit"/>
	  			</td>
	  		</tr>
		</table>

                <%
			Object obj = request.getAttribute("List");
			if(obj != null){
				List<ProductVo> list = (List<ProductVo>)obj;
				for(int i = 0;i<list.size();i++){
					ProductVo vo = list.get(i);
		%>
						<table width = "500px" align = "center" border = "1px">
					  		<tr>
					  			<td>  
					  				ProductId
					  			</td>
					  			<td>  
					  				<%=vo.getProductId() %>
					  			</td>
					  		</tr>
					  		<tr>
					  			<td>  
					  				ProductName
					  			</td>
					  			<td>  
					  				<%=vo.getProductName() %>
					  			</td>
					  		</tr>
					  		<tr>
					  			<td>  
					  				Price
					  			</td>
					  			<td>  
					  				<%=vo.getPrice() %>
					  			</td>
					  		</tr>
						</table>
					<%
				}
			
			}
		 %>	
  	</form>
  </body>
</html>
至此,一个简单的例子就做完了,在浏览器输入 http://localhost:8080/StrutsTest 即可访问。


Struts1的开发过程 java中struts1的开发过程---可以看一看 立即下载

相关推荐

【Musescore 】开源打谱软件 快速入门笔记

前两天做了个西贝柳斯的打谱软件学习笔记,反正都是初学,今天再来学习一款同类软件,比较之后确定一款深入学习。 西贝柳斯的学习笔记在此:https://blog.youkuaiyun.com/yuetaope/article/details/120020342 西贝柳斯是商业收费软件,要么花钱,要么盗版,如果您觉得这两者都不大好,那么推荐您试试Musescore。 Musescore是一款非常优秀的开源的打谱软件,生态繁荣。“开源”和“生态”是码农业的术语,我用正常人类的语言简单解释一下。 开源就是开放程序源代码,对码农

专注于医院数据分析技术与系统开发的创作与分享。 1万+

struts1开发学习笔记

使用一个简单的例子记录struts1开发过程。 0、 描述 主要功能描述: index界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。 newProduct.jsp是录入的界面,searchProduct.jsp是查询列表的界面。 ProductAction.java是处理逻辑的action 简单描述流程图:

3180

Pika Labs vs Runway ML:零基础小白如何选择最适合自己的AI视频生成工具?

本文详细对比了Pika Labs和Runway ML两款AI视频生成工具,从操作界面、生成效果、隐藏成本、工作流适配性和未来兼容性五个维度进行分析。Pika Labs适合零基础用户快速生成社交媒体短内容,而Runway ML则更适合专业级视频制作。帮助用户根据自身需求选择最适合的AI视频生成工具。

wood5的博客 599

Struts1.1完整实战开发例子

Struts1.1的新功能    Struts1.1与1.0相比加了一些很不错的功能。最主要是表单验证上功能增强。在Struts1.1数据的验证不象以前在Action中在validator具体实现,而是在validation.xml通过配置实现这样做的好处就是重用性加强了很多。 Struts1.1实现的主要组成    主要包括:Action,ActionForm,ActionMapping,Act

hitlermen的专栏 4035

ais信号接收设备_国内首款基于软件无线电技术的AIS基站投入测试使用

星网宇达子公司北京凯盾环宇科技有限公司经过多年的潜心研发,成功研制出国内首台基于软件无线电(SDR)的CATON 9011 AIS基站。该基站采用软件无线电技术,利用软件数字技术代替传统的模拟电路,大大的降低了模拟器件的使用率,提高了基站的可靠性和使用年限。CATON 9011 AIS基站研制依据ITU-R M.1371-5、IEC 62320-1、IEC 61162-1等国际标准,兼容...

weixin_29057163的博客 2334

SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程

SAP创建下达报工入库发料以及取消发料取消入库,批量下达删除关闭,生产订单出入库查询和状态更改查询记录

weixin_38974136的博客 2万+

struts1学习之--5、Struts1的工作原理和开发流程

Struts1的工作原理和开发流程: 1、读取配置(初始化ModuleConfig对象)   struts框架总控制器(ActionServlet)是一个servlet,在web.xml中配置成自动启动的servlet。    读取配置文件(struts-config.xml)的配置信息。为不同的struts模块初始化相应的ModuleConfig对象。   2,发送请求

左岸人的博客 1万+

抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)

什么都别说,先看效果: 字节跳动也开放了小程序给商家接入,可以在旗下APP如抖音、今日头条、今日头条极速版等应用中即点即用,基于庞大的数亿用户量为其引流,帮助商家获取用户流量,销售商品,其模式和微信小程序差不多。 1、后台管理地址: https://developer.toutiao.com/ 2、开发文档地址: https://developer.toutiao.com/dev/cn/min...

悟空码字的博客 1万+

Struts1开发步骤

以创建登入界面为例: 步骤1:在Myeclipse或者eclipse中新建一个web工程; 步骤2:将Struts开发包导入工程中,导入WebRoot--&gt;WEB-INF--&gt;lib文件夹中;(paste) 步骤3:创建login.jsp,放在WebRoot--&gt;WEB-INF目录下,并建立一个 表单,如下: &lt;body&gt; &lt;form act...

qq_36473318的博客 368

10分钟训练你的AI歌手:RVC WebUI声音克隆保姆级教程

本文提供了一份详细的RVC WebUI声音克隆保姆级教程,指导用户如何在10分钟内利用Retrieval-based-Voice-Conversion技术训练专属AI歌手。教程涵盖从环境配置、数据准备、模型训练到最终推理应用的全流程,即使是新手也能快速上手,实现高质量的声音克隆与歌曲生成。

weixin_29073241的博客 818

Crawl4AI实战:5分钟搞定电商价格监控爬虫(附Python代码)

本文详细介绍了如何利用开源AI网络爬虫框架Crawl4AI快速构建电商价格监控系统。通过Python实战代码,展示了从环境配置、智能内容提取到多平台适配、定时任务与数据可视化的完整流程,帮助运营人员和技术开发者高效实现自动化价格追踪与竞品分析。

weixin_29090917的博客 413

Struts1.X 开发原理、流程(自己总结)

Struts1.X 开发原理、流程(自己总结) 添加Struts1.x的jar文件(可以从网上下载,或在MyEclipse中添加Struts1.x的支持)。在Web.xml中配置action的映射---*.do编写Java业务类。建立FormBean的同时建立相应的Jsp页面。在action中做核心工作,一般包括三步:a--获取FormBean封装好

codejavamao的专栏 435

告别城市峡谷定位漂移:手把手教你用PSINS仿真INS/NHC/ODO组合导航(附代码获取)

本文详细解析了INS/NHC/ODO组合导航系统在城市峡谷环境中的应用,通过PSINS平台实现精准定位。文章涵盖核心原理、环境搭建、算法实现及性能优化,帮助开发者解决GNSS信号中断时的定位漂移问题,提升自动驾驶系统在复杂环境中的可靠性。

weixin_30329623的博客 429

struts2 概念、配置、开发流程 (1)

一、Struts2概念          Struts2是Struts的第二代产品,以WebWork为核心,采用拦截器的机制处理用户请求,使业务逻辑控制器能与Servlet API   完全脱离。Struts1采用Servlet的机制处理用户请求。          Struts 2框架的所有类都基于接口,核心接口独立于HTTP。Struts 2配置文件中的大多数配置元素都会有默认值,有助于...

三木的博客 243

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Struts 1.2 Action 开发流程

struts 1.2 版本开发 1.新建web project项目;2.导入Struts 1.2插件包;3.修改配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Config...

diandu2747的专栏 104

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Struts1.x开发流程小例子

要深入理解struts框架,首先要从它的基本流程和开发原理开始,再使用struts之前。首先创建一个web工程:StrutsProject,其次添加struts组件。 web.xml action org.apache.struts.action.ActionServlet config /WEB-INF/st

shiyuntian_wang的专栏 803

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Struts1简单开发流程梳理

共享数据的4种范围MVC设计模式JSP model1、JSP model2struts实现MVC机制(ActionServlet、Action)struts-config.xml ActionServlet、ActionForm、Action、ActionMapping、ActionForwardstruts应用、servlet容器、jsp容器、Java web容器 struts入门应用:he...

weixin_30488313的博客 242

1.struts2开发流程

1下载struts包,下载地址为:http://archive.apache.org/dist/struts/library/    2.解压后将lib下的这几个jar包放到自己写的web项目中    放到这里    然后将jar导入到项目右键=》Build Path =》Add to Build Path 3.编写配置文件,有三个web.xml(/W...

weixin_30776273的博客 65

Struts2(1)_系统开发流程分层

本系列博客汇总在这里:Struts2 汇总 系统开发流程分层系统开发流程分层 系统开发流程分层 如有错误,欢迎指正!

魏宇轩 460

struts1的业务流程

zilong8210的专栏 424

Struts 2 框架学习 第1part 基本开发流程

2012年12月26日 第一part Struts 2应用程序开发基本流程 简单的流程描述如下:页面->控制器->页面 Struts 2的基本简要流程如下: 客户端浏览器发出HTTP请求。 根据web.xml配置,该请求被过滤器FilterDispatcher接收并处理。 过滤器处理完成后继续将请求交给拦截器处...

weixin_34122810的博客 87

struts1学习之--4、分析和体验struts1程序执行流程

左岸人的博客 1394

Struts扫盲

这里的struts是struts1。以本文记录我的那些复习JavaEE的痛苦并快乐的晚上。

spy47_的博客 1575

struts1

struts1工作流程 struts1源码分析

小胖的专栏 347

struts1.x工作流程.doc

struts1.x工作流程.doc

mcfly57的专栏 104
上一篇: JAVA数据源连接方式汇总
下一篇: 获取文件的md5(java & php)
君子陌
博客等级 码龄17年 8粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值