package com.easyjf.struts.action;
import org.apache.struts.action.*;
import com.easyjf.example.business.IUserService;
import com.easyjf.example.business.IUser;
import com.easyjf.struts.form.*;
import javax.servlet.http.*;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
//import org.springframework.beans.BeansException;
import com.easyjf.util.*;
import java.util.*;
import com.easyjf.web.tools.*;
import com.easyjf.util.CommUtil;
public class UserManageAction extends Action
{
private IUserService userService;
public IUserService getUserService()
{
return userService;
}
public void setUserService(IUserService userService)
{
this.userService=userService;
}
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception
{
WebApplicationContext wac=WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServlet().getServletContext());
this.userService=(IUserService)wac.getBean("userService");
String command=request.getParameter("easyJWebCommand");
if(command==null||"".equals(command)||"list".equals(command)||"query".equals(command))
{
return doQuery(mapping,form,request,response);
}
else if("new".equals(command))
{
return mapping.findForward("edit");
}
else if("add".equals(command))
{
return doAdd(mapping,form,request,response);
}
else if("edit".equals(command))
{
return doEdit(mapping,form,request,response);
}
else if("update".equals(command))
{
return doUpdate(mapping,form,request,response);
}
else if("delete".equals(command))
{
return doDelete(mapping,form,request,response);
}
return super.execute(mapping, form, request, response);
}
public ActionForward doEdit(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
{
UserForm vf=(UserForm)form;
IUser user=null;
if(vf.getCid()!=null&&!vf.getCid().equals(""))
{
user=userService.read(vf.getCid());
}
if(user==null)
{
user=userService.newUser();
}
if(user!=null)
{
vf.setCid(user.getCid());
vf.setUsername(user.getUsername());
vf.setPassword(user.getPassword());
vf.setTel(user.getTel());
vf.setEmail(user.getEmail());
vf.setIntro(user.getIntro());
vf.setBirthday(user.getBirthday());
return mapping.findForward("edit");
}
else
{
request.setAttribute("msg", "找不到数据");
return doQuery(mapping,form,request,response);
}
}
public ActionForward doUpdate(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
{
IUser user=(IUser)form2Po(form);
if(userService.update(user))
{
request.setAttribute("msg", "数据修改成功!");
return doQuery(mapping,form,request,response);
}
else
{
request.setAttribute("msg", "数据修改失败!");
return mapping.getInputForward();
}
}
public ActionForward doAdd(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
{
IUser user=(IUser)form2Po(form);
if(user==null)
{
request.setAttribute("msg", "无法创建要保存的对象,添加失败!");
return mapping.getInputForward();
}
if(userService.save(user))
{
request.setAttribute("msg", "数据添加成功!");
return doQuery(mapping,form,request,response);
}
else
{
request.setAttribute("msg", "数据添加失败!");
return mapping.getInputForward();
}
}
public ActionForward doQuery(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
{
int currentPage=CommUtil.null2Int(request.getParameter("page"));
int pageSize=CommUtil.null2Int(request.getParameter("pageSize"));
if(currentPage<1)
{
currentPage=1;
}
if(pageSize<1)
{
pageSize=15;
}
String scope="1=1";
Collection paras=new ArrayList();
String orderType=CommUtil.null2String(request.getParameter("orderType"));
String orderField=CommUtil.null2String(request.getParameter("orderField"));
String userName=CommUtil.null2String(request.getParameter("queryUserName"));
String tel=CommUtil.null2String(request.getParameter("queryTel"));
if(!userName.equals(""))
{
scope+=" and username like ?";
paras.add("%"+userName+"%");
}
if(!tel.equals(""))
{
scope+=" and tel like ?";
paras.add("%"+tel+"%");
}
if(orderField.equals(""))
{
orderField="username";
orderType="desc";
}
if(!orderField.equals(""))
{
scope+=" order by "+orderField;
if(!orderType.equals(""))
{
scope+=" "+orderType;
}
}
IPageList pList=new PageList(new ListQuery(userService.query(scope, paras)));
pList.doList(pageSize, currentPage, "", "");
if(pList!=null)
{
request.setAttribute("list", pList.getResult());
request.setAttribute("pages", new Integer(pList.getPages()));
request.setAttribute("rows", new Integer(pList.getRowCount()));
request.setAttribute("page", new Integer(pList.getCurrentPage()));
request.setAttribute("gotoPageHTML", CommUtil.showPageHtml(pList.getCurrentPage(), pList.getPages()));
}
request.setAttribute("orderType", orderType);
request.setAttribute("orderField",orderField);
return mapping.findForward("list");
}
public ActionForward doDelete(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
{
UserForm uf=(UserForm)form;
IUser user=null;
if(uf.getCid()!=null&&!uf.getCid().equals(""))
{
user=userService.read(uf.getCid());
}
if(user!=null&&userService.delete(user))
{
request.setAttribute("msg", "数据删除成功!");
}
else
{
request.setAttribute("msg", "数据删除失败!");
}
return doQuery(mapping,form,request,response);
}
public IUser form2Po(ActionForm form)
{
UserForm vf=(UserForm)form;
IUser user=null;
if(vf.getCid()!=null&&!vf.getCid().equals(""))
{
user=userService.read(vf.getCid());
}
if(user==null)
{
user=userService.newUser();
}
user.setUsername(vf.getUsername());
user.setBirthday(vf.getBirthday());
user.setEmail(vf.getEmail());
user.setTel(vf.getTel());
user.setPassword(vf.getPassword());
user.setIntro(vf.getIntro());
return user;
}
}
java ss1h框架增删改查
Java SSH 框架是企业级Web应用开发的常用组合,由Spring、Struts和Hibernate三个开源框架集成。本教程将深入讲解如何利用这三个组件构建一个具备增删改查功能的MVC模式应用。 Spring框架是核心的依赖注入(DI)和面向切面编程(AOP)容器,它负责管理应用中的对象和事务。在Java SS1H框架中,Spring提供了对其他两个框架的整合支持,使得业务逻辑和持久层操作可以无缝衔接。 Struts作为MVC模式的前端控制器,处理HTTP请求,将用户交互转发到对应的业务逻辑,并返回响应结果。在"java ss1h框架增删改查"的场景下,Struts的Action类是关键,它接收请求,调用Service层的方法,执行相应的CRUD操作,并将结果转发给视图层展示。 Hibernate则是负责数据库操作的ORM(对象关系映射)框架,它允许开发者以面向对象的方式操作数据库,减少了SQL的编写工作。在增删改查操作中,Hibernate通过实体类映射数据库表,使用Session接口进行CRUD操作,如save()、delete()、update()和load()等方法。 在实现列表翻页功能时,我们需要结合Struts的拦截器和Hibernate的分页查询。Struts的拦截器可以统计总记录数,而Hibernate的Criteria或HQL查询则用于根据当前页码和每页记录数获取对应的数据子集。 在具体开发过程中,我们通常会定义以下组件: 1. **实体类(Entities)**:与数据库表相对应,包含属性和getter/setter方法。 2. **Hibernate配置文件(Hibernate.cfg.xml)**:配置数据库连接信息和映射文件。 3. **映射文件(.hbm.xml)**:定义实体类和数据库表之间的映射关系。 4. **DAO(Data Access Object)**:处理与数据库的交互,包括增删改查操作。 5. **Service(Service层)**:业务逻辑层,调用DAO实现具体功能。 6. **Action(Struts Action)**:接收和处理HTTP请求,调用Service层并控制流程。 7. **JSP(视图)**:显示数据,可能包含JSTL标签和EL表达式来简化页面逻辑。 在进行增删改查操作时,需要注意以下几个关键点: 1. **事务管理**:Spring通过AOP进行事务管理,确保在出现异常时能够回滚,保证数据一致性。 2. **错误处理**:使用Struts的异常拦截器捕获并处理可能出现的业务异常,提供友好的错误提示。 3. **安全性**:防止SQL注入和XSS攻击,对输入数据进行校验和过滤。 4. **性能优化**:合理设计数据库索引,避免全表扫描,使用缓存提高访问速度。 在实际项目中,为了提高代码复用性和可维护性,可以采用Maven或Gradle进行依赖管理,使用Spring Boot简化配置,以及引入MyBatis等现代ORM工具替换部分Hibernate功能。同时,可以结合前端框架如Vue.js或React实现更复杂的交互效果,提升用户体验。 总结来说,"java ss1h框架增删改查"涉及了Spring、Struts和Hibernate的协同工作,涵盖了MVC模式的核心概念,以及数据库操作、事务管理、安全控制和性能优化等多个方面。理解并熟练掌握这些知识点,对于开发高效、稳定的Web应用至关重要。
- 1
- 2
- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
- 粉丝: 1
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 西门子s7 200smart与3台英威腾GD变频器通讯实战程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等 程序采用轮询,可以后续根据要求适当修
- 标签打印C#控制程序源代码,适合自己进行二次开发 软件可以自己编辑标签,可以自动条形码或二维码的位置
- 松下FP-XHC60T 标准可带18轴中型程序,总共逻辑1万多步,含昆仑通态触摸屏程序(触摸屏附带配方功能,以及产能统计:), 项目功能完整主站与两个从站采用PLC链接通讯,该程序为标准框架,故障,复
- WPF智慧工厂数据平台 1, 提供一个智慧工厂数据平台框架 2,理解wpf的设计模式 3,学习如何绘制各种统计图 4,设计页面板块划分 5,如何在适当时候展现动画 有盆友问,这个是否带数据库
- yolo目标检测数据-抽烟、打电话、打哈欠数据集5665张含yolo标签文件(可用于疲劳检测、司机行为检测).zip
- FLAC3D锚杆辅助生成软件根据CAD图自动打锚杆 使用感受 在CAD画出锚杆,启动软件会生成锚杆命令流,call入flac中即可或者复制到自己命令流中,十分便捷 由于开发成软件,永久使用
- 施耐德ATV71原厂纸质原理图纸 施耐德ATV71变频器原理图纸,可以用来研究变频器电路的结构组成、控制原理,为搞清楚变频电路的控制原理、信号的来龙去脉提供科学依据,更能够做为变频器
- 信捷XC PLC与3台施耐德ATV12变频器通讯程序 信捷XC PLC与3台施耐德ATV12变频器通讯,可靠稳定,同时解决施耐德ATV12变频器断电重启后,自准备工作,无需人为准备 器件:信捷XC3
- 电动自行车方案,资料齐全 成熟电动自行车代码方案,学习好资料 中颖中颖电动自行车代码方案,包含代码,原理图,pcb,说明文档 不论是学习电动车代码还是学习电流环,速度环,Pid调节,都是很好
- 三菱PLC FX5U 伺服机器人程序 包括三菱FX5U程序,威纶通触摸屏程序,IO表,材料清单,eplan和PDF电气图 4轴伺服程序,1个机器人,FX5U结构化编程
- 电机启动模型 Matlab simulink 可用于模拟电压暂降等电能质量问题,适配于本家的IEEE 33节点模型
- python入门-外星人小游戏
- 高压大功率电动汽车360V方案 电动汽车高压电机控制器360v乘用车平台,某知名电控厂家主推 产品,软件源代码,软件FOC矢量控制算法,boot源码,全部开源,强大的上位机调试工具带实时波形显示,原理
- matlab 多智能体系统编队控制仿真,非线性,一致性,领导跟随控制,有限时间控制等
- 蛋白质功能预测中的深度学习方法:结合序列与互作网络的深层分类模型(DeepGO)
- 三菱纯水设备程序纯水设备程序 使用三菱A系列 PLC和三菱A985GOT触摸屏,也可以额外有偿转移指其他触摸屏,比如昆仑通态和威纶通还有信捷等等