`

自己写的简易struts1.X开发框架

 
阅读更多

自己写的一个简易开发框架,很简单,只包括如下内容:

 1、简单数据CURD

 2、分页、排序功能

 3、错误提示功能

 4、条件查询功能

 5、分组查询功能

 

至于缓存功能、多表连接处理、客户端javascript验证等,日后在慢慢添加。

 

假设数据库存在如下数据库表:

 

CREATE TABLE `bbs_file` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `filepath` varchar(50) DEFAULT NULL,
  `topicId` int(10) DEFAULT NULL,
  `logtime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

 

开发步骤:

   1、新建与表对应的POJO,

 

package com.wj.mode;

public class File {
	private int id;
	private String filepath;
	private int topicId;
	private String logtime;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getFilepath() {
		return filepath;
	}
	public void setFilepath(String filepath) {
		this.filepath = filepath;
	}
 
	public int getTopicId() {
		return topicId;
	}
	public void setTopicId(int topicId) {
		this.topicId = topicId;
	}
	public String getLogtime() {
		return logtime;
	}
	public void setLogtime(String logtime) {
		this.logtime = logtime;
	}
	@Override
	public String toString() {
		return "File [id=" + id + ", filepath=" + filepath + ", topicId="
				+ topicId + ", logtime=" + logtime + "]";
	}
	
	
}

 

2、新建该POJO对应的CURD dao操作:

package com.wj.db;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import com.common.BaseDaoSupport;
import com.common.PageInfo;
import com.common.RowMapper;
import com.wj.mode.File;

public class FileDao extends BaseDaoSupport<File> {

	@Override
	public int insert(File t) throws SQLException {
		String sql = "insert into bbs_file (filepath,topicid,logtime) values (?,?,now())";
		Object[] args = { t.getFilepath(), t.getTopicId() };
		return jdbcTemplate.update(sql, args);
	}

	@Override
	public int update(File t) throws SQLException {
		String sql = "update bbs_file set filepath = ?,topicid = ? ,logtime=? where id = ?";
		Object[] args = { t.getFilepath(), t.getTopicId(), t.getLogtime(),
				t.getId() };
		return jdbcTemplate.update(sql, args);
	}

	@Override
	public int delete(Object... args) throws SQLException {
		String sql = "delete from bbs_file where id = ?";
		return jdbcTemplate.update(sql, args);
	}

	@Override
	public File find(Object... args) throws SQLException {
		String sql = "select * from bbs_file where id = ?";
		return (File) jdbcTemplate.find(sql, args, new FileRowMapper());
	}

	@Override
	public List<File> list(Object... args) throws SQLException {
		String sql = "select * from bbs_file";
		return jdbcTemplate.list(sql, args, new FileRowMapper());
	}

	@Override
	public void page(PageInfo pageinfo, Object... args) throws SQLException {
		String sql = "select * from bbs_file";
		jdbcTemplate.listByPage(sql, args, pageinfo, new FileRowMapper());

	}

	class FileRowMapper implements RowMapper<File> {

		@Override
		public File rowMapper(ResultSet rs) throws SQLException {
			File obj = new File();
			obj.setFilepath(rs.getString("filepath"));
			obj.setId(rs.getInt("id"));
			obj.setLogtime(rs.getString("logtime"));
			obj.setTopicId(rs.getInt("topicId"));
			return obj;
		}

	}

}

 注意该类继承了自定义的BaseDaoSupport类,该类涵盖了基本的数据库操作。

 

3、开发该类对应的FormBean:

package com.wj.struts.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;

import com.wj.mode.File;

public class FileForm extends BaseForm<File> {

	@Override
	public Object getKey() {
		return this.getData().getId();
	}

	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		super.data = new File();
		super.reset(mapping, request);
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		// TODO Auto-generated method stub
		return super.validate(mapping, request);
	}

}
 

BaseForm含有对File的基本存、取操作,该FileForm有一个基本的获取数据库主键操作getKey()

 

4、开发基本的FileAction类,对应数据的CRUD操作、

 

package com.wj.struts.action;

import java.sql.SQLException;

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.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.wj.db.FileDao;
import com.wj.mode.File;

public class FileAction extends BaseAction<File> {
	private static Logger logger = LoggerFactory.getLogger(FileAction.class);

	{
		super.destObject = "File";
		super.dao = new FileDao();
	}

	@Override
	public ActionForward list(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		return super.defalutList(mapping, form, request, response);
	}

	@Override
	protected void initData(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws SQLException { 

	}

	@Override
	public ActionForward delete(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		return super.defaultDelete(mapping, form, request, response);
	}

	@Override
	public ActionForward update(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		return super.defaultUpdate(mapping, form, request, response);
	}

	@Override
	public ActionForward add(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		return super.defaultAdd(mapping, form, request, response);
	}

	@Override
	public ActionForward load(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		return this.defaultLoad(mapping, form, request, response);
	}

}

 

该类的所有操作都是基于BaseAction默认的处理,这样编码量大大减少。

 

5、配置struts-config.xml 添加file对应的action配置:

<action path="/fileAction" name="fileForm" parameter="method"
			scope="request" type="com.wj.struts.action.FileAction" input="/projsp/fileUpdate.jsp">
			<forward name="list" path="/projsp/fileList.jsp" />
			<forward name="update" path="/projsp/fileUpdate.jsp" />
</action>

 

6、新建fileList.jsp列表显示页,用table方式显示数据库中的数据:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="common"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="projsp/table.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
	<a href="fileAction.do?method=load&action=add">添加 </a>
</div>
<html:errors/>

<html:form action="fileAction.do?method=list">
<div>
	<html:hidden property="pageInfo.queryCondition1" value="topicid=?"/>
	帖子ID:<html:text property="pageInfo.queryValue1" />&nbsp;&nbsp;<html:submit>提交</html:submit>
</div>
	<table>
		<tr>
			<td>
				<common:sort value="id" field="id"/>
			</td>
			<td>
				<common:sort value="路径" field="filepath"/>
			</td>
			<td>
				<common:sort value="帖子标题" field="topicid"/>
			</td>
			<td>
				<common:sort value="时间" field="logtime"/>
			</td>
			<td>
				操作
			</td>
		</tr>
		<logic:present property="pageInfo.resultList" name="fileForm" scope="request">
			<logic:iterate id="elem"  property="pageInfo.resultList" name="fileForm" scope="request">
				<tr>
					<td>
						${elem.id }
					</td>
					<td>
						${elem.filepath }
					</td>
					<td>
						${elem.topicId }
					</td>
					<td>
						${elem.logtime }
					</td>
					<td>
						<a href="fileAction.do?method=load&action=update&data.id=${elem.id }&${fileForm.pageInfo.pageInfor }">修改</a>
						<a href="fileAction.do?method=delete&data.id=${elem.id }&${fileForm.pageInfo.pageInfor }">删除</a>
					</td>
				</tr>
			</logic:iterate>
		</logic:present>
		<common:pagination form="fileForm" num="5"/>
	</table>
</html:form>
</body>
</html>
 

  7、新建fileUpdatte.jsp用于添加和修改file操作:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="common"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="projsp/table.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<html:errors/>
<html:form action="fileAction.do?method=${param.action }&action=${param.action }">
<html:hidden property="pageInfo.recSizePerPage"/>
<html:hidden property="pageInfo.totalRecordSize"/>
<html:hidden property="pageInfo.totalPageSize"/>
<html:hidden property="pageInfo.currentPageNum"/>
<html:hidden property="pageInfo.sort"/>
<html:hidden property="pageInfo.orderBy"/>
<table>
	<tr>
		<td>id</td>
		<logic:equal value="update" parameter="action">
				<td>
					<bean:write property="data.id" name="fileForm"/>					
					<html:hidden property="data.id" name="fileForm" />
				</td>
			</logic:equal>
			
			<logic:equal value="add" parameter="action">
				<td>										
					<html:text property="data.id" name="fileForm" />
				</td>
			</logic:equal>	
	</tr>
	<tr>
		<td>文章ID</td>
		<td><html:text property="data.topicId" name="fileForm"></html:text></td>
	</tr>
	<tr>
		<td>文章路径</td>
		<td><html:text property="data.filepath" name="fileForm"></html:text></td>
	</tr>
	
	<tr>
		<td>时间</td>
		<td><html:text property="data.logtime" name="fileForm"></html:text></td>
	</tr>
	<tr>
		<td colspan="2">
			<html:submit>提交</html:submit>
		</td>
	</tr>
</table>
 </html:form>
</body>
</html>

 

至此一个基本表的CRUD、排序、分页等功能就完成了。

 

此框架优点和适应范围:

  1、数据操作的基本功能已经全部实现。复杂的就需要自己去处理了

  2、对于简单的数据操作,此框架还是非常适用,对于大数据量的操作,就必须实际情况实际处理了

  3、采用此框架需要编码的地方特别少,基本操作,排序,条件查询都被封装了。

 

 

 

 

分享到:
评论

相关推荐

    Struts1.x_Project.zip

    Struts1.x是一个经典的Java Web开发框架,它遵循Model-View-Controller(MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用程序。在这个"Struts1.x_Project.zip"压缩包中,我们可以看到一个使用Struts1.x...

    用struts1.x 开发的简易计算器

    在本文中,我们将深入探讨如何使用Struts1.x来开发一个简易计算器应用,以及在这个过程中涉及的关键概念和技术。 首先,让我们了解Struts框架的核心组件。Struts1.x的主要目标是解耦应用程序的业务逻辑、控制流程和...

    基于Java和JavaScript的简单论坛示例设计源码,包含struts1.x、spring框架

    本项目是一个基于Java和JavaScript的简易论坛示例,采用struts1.x和spring框架开发。项目源码包含457个文件,其中JavaScript文件125个,XML配置文件54个,图片文件(包括GIF和PNG)113个,Java源代码文件38个,class...

    mystruts简易MVC框架实现 .

    "mystruts"是一个简化版的MVC框架,其设计灵感来源于经典的Struts1.x框架,旨在为开发者提供一个轻量级的解决方案,便于理解和实践MVC思想。 【描述】"实现mvc思想,部分代码参考struts1.x" MVC思想的核心在于将...

    Struts2.0初学者示例项目

    升级自Struts1.x,融合WebWork优点,强化功能与灵活性。 核心元素:Action处理用户请求,拦截器执行预/后处理逻辑,OGNL表达式语言简化数据传递。 构建Struts2应用步骤 环境配置:JDK、IDE(Eclipse/IntelliJ IDEA)...

    java笔试题及部分答案

    struts2.x 是 struts1.x 和 webwork2.x 聚合而成,去掉了 1.x 中的 form 和 action,但不是不使用 action,而是不再使用 actionform。struts2.x 的标签、表单验证、类型、转化都要比 struts1.x 强大,并且 servlet ...

    利用模拟Struts做简易博客

    通过以上知识点的介绍,我们可以看到这个简易博客项目是如何利用Struts框架和Oracle数据库来构建一个功能完备的Web应用的。开发者需要熟悉Struts的架构和配置,掌握数据库连接和操作,以及熟练使用JSP和相关标签库。...

    struts menu 学习指南

    Struts Menu 插件通过简化菜单配置和增强动态展示能力,极大地提升了基于Struts框架开发的Web应用的灵活性和维护性。通过遵循上述指南,开发者可以快速掌握如何利用Struts Menu插件优化应用的用户体验,同时保持代码...

    java web demo

    `Struts1.x令牌(Token)的使用.rar`则涉及Struts 1.x框架中的令牌机制,这是一种防止重复提交和跨站请求伪造(CSRF)的安全措施。在表单提交过程中,Struts会生成一个唯一的令牌并存储在session中,同时将其作为隐藏...

    BBS系统(很不错哦)

    Struct1.x通常是指Struts1,这是一个早期的Java Web开发框架,用于构建MVC(Model-View-Controller)架构的应用程序,特别适合开发Web应用程序,如BBS(Bulletin Board System,电子公告板系统)。 描述中的“用...

    参考简历模板三.doc

    - **开源框架**:熟练使用Struts1.x/Struts2.x/WebWork/Spring/Hibernate/Ibatis等。 - **分布式开发**:熟练运用EJB、RMI、JNDI等技术。 - **WebService、XML**:能使用XFire和Axis进行开发部署。 - **Web应用...

    JAVA上百实例源码以及开源项目源代码

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    超级有影响力霸气的Java面试题大全文档

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

Global site tag (gtag.js) - Google Analytics