自己写的一个简易开发框架,很简单,只包括如下内容:
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" /> <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是一个经典的Java Web开发框架,它遵循Model-View-Controller(MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用程序。在这个"Struts1.x_Project.zip"压缩包中,我们可以看到一个使用Struts1.x...
在本文中,我们将深入探讨如何使用Struts1.x来开发一个简易计算器应用,以及在这个过程中涉及的关键概念和技术。 首先,让我们了解Struts框架的核心组件。Struts1.x的主要目标是解耦应用程序的业务逻辑、控制流程和...
本项目是一个基于Java和JavaScript的简易论坛示例,采用struts1.x和spring框架开发。项目源码包含457个文件,其中JavaScript文件125个,XML配置文件54个,图片文件(包括GIF和PNG)113个,Java源代码文件38个,class...
"mystruts"是一个简化版的MVC框架,其设计灵感来源于经典的Struts1.x框架,旨在为开发者提供一个轻量级的解决方案,便于理解和实践MVC思想。 【描述】"实现mvc思想,部分代码参考struts1.x" MVC思想的核心在于将...
升级自Struts1.x,融合WebWork优点,强化功能与灵活性。 核心元素:Action处理用户请求,拦截器执行预/后处理逻辑,OGNL表达式语言简化数据传递。 构建Struts2应用步骤 环境配置:JDK、IDE(Eclipse/IntelliJ IDEA)...
struts2.x 是 struts1.x 和 webwork2.x 聚合而成,去掉了 1.x 中的 form 和 action,但不是不使用 action,而是不再使用 actionform。struts2.x 的标签、表单验证、类型、转化都要比 struts1.x 强大,并且 servlet ...
通过以上知识点的介绍,我们可以看到这个简易博客项目是如何利用Struts框架和Oracle数据库来构建一个功能完备的Web应用的。开发者需要熟悉Struts的架构和配置,掌握数据库连接和操作,以及熟练使用JSP和相关标签库。...
Struts Menu 插件通过简化菜单配置和增强动态展示能力,极大地提升了基于Struts框架开发的Web应用的灵活性和维护性。通过遵循上述指南,开发者可以快速掌握如何利用Struts Menu插件优化应用的用户体验,同时保持代码...
`Struts1.x令牌(Token)的使用.rar`则涉及Struts 1.x框架中的令牌机制,这是一种防止重复提交和跨站请求伪造(CSRF)的安全措施。在表单提交过程中,Struts会生成一个唯一的令牌并存储在session中,同时将其作为隐藏...
Struct1.x通常是指Struts1,这是一个早期的Java Web开发框架,用于构建MVC(Model-View-Controller)架构的应用程序,特别适合开发Web应用程序,如BBS(Bulletin Board System,电子公告板系统)。 描述中的“用...
- **开源框架**:熟练使用Struts1.x/Struts2.x/WebWork/Spring/Hibernate/Ibatis等。 - **分布式开发**:熟练运用EJB、RMI、JNDI等技术。 - **WebService、XML**:能使用XFire和Axis进行开发部署。 - **Web应用...
数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...