- 浏览: 322477 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
http://www.zjsyc.com/blog/article/J2EE/300.html
上面提到的这种方式使用的时候的局限性很大,下面再介绍两种方式:
1、思路:删除的时候采用ajax实现异步操作(调用采用ajax编写方法实现删除,而不是超链接),调用后台连接处理删除,删除完了之后后台不作任何跳转(return null;),响应返回到页面上的ajax请求方法,然后提交页面上的查询表单,页面自动查询刷新(并且会带上刚开始的查询条件),示例如下:
driverList.jsp里面的删除按钮定义:
driverList.jsp里面的ajax异步删除操作方法:
delDriver.do对应的Action方法:
2、思路:采用session来存放起初的查询信息,一般的列表页面初始化和列表页面上面的查询功能用的都是同一个请求链接(Action里面调用同一个方法);并且一般的增删改查的功能方法和上面的页面初始化以及页面上方的查询功能的方法都在同一个Action里面。列表页面上每条记录后面的增删改查等各种功能完成之后都要返回到列表页面上(各种功能操作完成之后都会调用初始化列表或是列表页面上方的查询功能对应的链接)。那么我们现在在初始化列表前面再加一个和session相关的操作方法,在这个方法里面我们将界面传上来的查询信息存放到session里面(页面上方的查询功能也会调用此方法),然后在这个方法里面再调用原来的初始化列表链接方法,之后返回到列表页面上【重点:对于增删改查等每条记录后面的各种操作都不会调用这个新加的session相关的方法,它们各自执行操作完成之后返回列表页面直接调用原来的旧的列表链接方法即可;只有列表页面初始化以及列表上方的查询功能调用此方法,在struts2中调用需要重新配置一个链接】。下面是一个使用示例:
假如新加的session相关的方法是openSession()方法,原来的旧的初始化列表页面方法为open()方法,下面是代码示例:
列表页面index.jsp:
新加的session相关方法,openSession(),person为存放查询条件的实体:
openSession()的配置信息:
原来的旧的初始化列表页面以及查询功能对应方法,open(),:
open()配置信息:
比如再列举一个列表页面修改操作的相关配置(成功之后是转到userListFirst而不是user):
并且需要注意的是:初始化列表处的链接需要配置成user.do而不是userListFirst.do
上面提到的这种方式使用的时候的局限性很大,下面再介绍两种方式:
1、思路:删除的时候采用ajax实现异步操作(调用采用ajax编写方法实现删除,而不是超链接),调用后台连接处理删除,删除完了之后后台不作任何跳转(return null;),响应返回到页面上的ajax请求方法,然后提交页面上的查询表单,页面自动查询刷新(并且会带上刚开始的查询条件),示例如下:
driverList.jsp里面的删除按钮定义:
<c:if test="${my:hasPermission(login.id,'driverinfomgr',3) }"> <a href="javascript:del('${driver.idCard}');" ><img src="img/ico_3.gif" width="15" height="16" alt="删除"/></a> </c:if>
driverList.jsp里面的ajax异步删除操作方法:
<script type="text/javascript"> function del(id) { if (window.confirm("确认删除?")) { $.ajax({ url: "delDriver.do", data:{"driver.idCard":id}, cache: false, success: function() { window.location.reload(true); alert("删除司机信息成功!"); //提交查询表单,此时页面上的查询数据还在 document.forms[0].submit(); }, error: function() { alert("删除司机信息失败!"); //提交查询表单,此时页面上的查询数据还在 document.forms[0].submit(); } }); } } </script>
delDriver.do对应的Action方法:
// 删除司机信息 public String delDriver() throws Exception { try { // String id = driver.getId(); String idCard = driver.getIdCard(); driverManager.delDriver(idCard); WriteSystemLog.writeLogSuccess(DriverAction.class, "删除司机信息", this .getUserInfo()); } catch (Exception e) { WriteSystemLog.writeLogError(DriverAction.class, "删除司机信息", this .getUserInfo()); e.printStackTrace(); } return null; }
2、思路:采用session来存放起初的查询信息,一般的列表页面初始化和列表页面上面的查询功能用的都是同一个请求链接(Action里面调用同一个方法);并且一般的增删改查的功能方法和上面的页面初始化以及页面上方的查询功能的方法都在同一个Action里面。列表页面上每条记录后面的增删改查等各种功能完成之后都要返回到列表页面上(各种功能操作完成之后都会调用初始化列表或是列表页面上方的查询功能对应的链接)。那么我们现在在初始化列表前面再加一个和session相关的操作方法,在这个方法里面我们将界面传上来的查询信息存放到session里面(页面上方的查询功能也会调用此方法),然后在这个方法里面再调用原来的初始化列表链接方法,之后返回到列表页面上【重点:对于增删改查等每条记录后面的各种操作都不会调用这个新加的session相关的方法,它们各自执行操作完成之后返回列表页面直接调用原来的旧的列表链接方法即可;只有列表页面初始化以及列表上方的查询功能调用此方法,在struts2中调用需要重新配置一个链接】。下面是一个使用示例:
假如新加的session相关的方法是openSession()方法,原来的旧的初始化列表页面方法为open()方法,下面是代码示例:
列表页面index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@include file="/jsp/common/common.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <script language="javascript" src="js/public.js"></script> <title>用户管理</title> <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script> <script src="js/datepicker/WdatePicker.js" defer="defer"></script> <link href="skins/default.css" rel="stylesheet" /> <script src="js/artDialog/artDialog.js?skin=default"></script> <script src="js/artDialog/plugins/iframeTools.source.js"></script> <script src="js/showDialog.js"></script> <script src="jsp/module/js/module.js"></script> <script src="js/jilian_xm.js"></script> <link rel="stylesheet" href="css/print.css" type="text/css" media="print" /> <link href="css/style.css" rel="stylesheet" type="text/css"> <link href="css/displaytag.css" rel="stylesheet" type="text/css"> <style> body { background: #cddff5; } .floatLmargR20 { float: left; margin-right: 10px; line-height: 28px; height: 28px; } </style> <style type="text/css" media="all"> @import url("css/maven-base.css"); @import url("css/maven-theme.css"); @import url("css/site.css"); @import url("css/screen.css"); </style> <script type="text/javascript"> $(function(){ jQuery("#person tr:even").addClass("demoBg"); }); function _subLogForm(){ jQuery("#_userForm").submit(); } </script> </head> <body> <div class="jcxxserch" > <form action="user.do" method="post" id="_userForm" > <table width="100%" class="jcxxserchtlb"> <tr> <td> <label>姓名</label> <input type="text" value="${nps.name }" name="person.name" id='_name'> </td> <td> <label>区县</label> <select style="width:80px" name="person.city" id="jilian_county" onchange="jilianchange();"> <%-- <option value="-1">--请选择--</option>--%> <%-- <c:forEach items="${cityMap }" var="city">--%> <%-- <option value="${city.key }">${city.value }</option>--%> <%-- </c:forEach>--%> <option value="-1">--请选择--</option> <%-- <c:if test="${login.orgcode == 140600}">--%> <%-- <option value="140600">朔州市</option>--%> <%-- </c:if>--%> <c:forEach items="${area }" var="city"> <option value="${city.key }">${city.value }</option> </c:forEach> </select> </td><td> <label>站点类型</label> <select name="person.staionType" style="width:80px" id="jilian_type" onchange="jilianchange();"><%-- <option value="-1">--请选择--</option> --%><option value="3">治超办</option> <%-- <option value="0">公路检测站</option> <option value="2">源头企业</option> <option value="1">移动车</option> --%></select> </td><td> <label>站点</label> <select name="person.station" style="width:250px" id="jilian_station"> <option value="-1">--请选择--</option> <c:forEach items="${listsite }" var="ssss"> <option value="${ssss.code }">${ssss.name }</option> </c:forEach> </select> </td> <td><a href="#" class="txtLeft"><img onclick="_subLogForm();" src="img/serch.gif" width="76" height="22" border="0" /></a></td> </tr> </table> </form> </div> <c:if test="${my:hasPermission(login.id,'user',1) }"> <div class="jcxxdata"><br> <display:table class="jcxxserchtlb" id="person" name="list" pagesize="10" requestURI="user.do" style="width:100%;height:100%;" defaultsort="1"> <display:column sortable="true" headerClass="sortable" title="序号" comparator="com.winner.permissions.util.DisplayTagIdComparator"> ${person_rowNum } </display:column> <display:column property="name" sortable="true" headerClass="sortable" title="姓名"></display:column> <display:column sortable="true" headerClass="sortable" title="性别"> ${person.sex=="0" ? "男" :"女" } </display:column> <display:column property="org.name" sortable="true" headerClass="sortable" title="所属区县"></display:column> <display:column property="danWei" sortable="true" headerClass="sortable" title="所属单位"></display:column> <display:column property="user.username" sortable="true" headerClass="sortable" title="登录帐号"></display:column> <display:column property="user.expireTime" format="{0,date,yyyy-MM-dd}" sortable="true" headerClass="sortable" title="失效时间" ></display:column> <display:column property="role" sortable="true" headerClass="sortable" title="角色" ></display:column> <display:column title="操作" media="html"> <c:choose> <c:when test="${not empty person.user }"> <c:if test="${my:hasPermission(login.id,'user',2) }"> 分配帐号 </c:if> <c:if test="${my:hasPermission(login.id,'user',3) }"> <a href="#" onclick="delObj('delUser.do?id=${person.user.id }','userListFirst.do','帐号');">删除帐号</a> </c:if> <c:if test="${my:hasPermission(login.id,'user',2) }"> <a href="#" onclick="showDialog('updateInputUser.do?id=${person.user.id }',300,180,'修改帐号信息');">修改帐号</a> </c:if> <c:if test="${my:hasPermission(login.id,'user',2) }"> <a href="#" onclick="showDialog('userRoleList.do?id=${person.user.id }',400,300,'分配角色','addInputUser');">分配角色</a> </c:if> </c:when> <c:otherwise> <c:if test="${my:hasPermission(login.id,'user',2) }"> <a href="#" onclick="showDialog('addInputUser.do?personId=${person.id }',350,200,'分配帐号');">分配帐号</a> </c:if> <c:if test="${my:hasPermission(login.id,'user',3) }"> 删除帐号 </c:if> <c:if test="${my:hasPermission(login.id,'user',2) }"> 修改帐号 </c:if> <c:if test="${my:hasPermission(login.id,'user',2) }"> 分配角色 </c:if> </c:otherwise> </c:choose> </display:column> <display:setProperty name="sort.amount" value="list"/> </display:table> </div> </c:if> </body> </html> <script> $("#jilian_county").find("option[value='${nps.city}']").attr("selected",true); $("#jilian_type").find("option[value='${nps.staionType}']").attr("selected",true); $("#jilian_station").find("option[value='${nps.station}']").attr("selected",true); </script>
新加的session相关方法,openSession(),person为存放查询条件的实体:
public String openSession() throws Exception { this.getSession().setAttribute("person", person); open(); return SUCCESS; }
openSession()的配置信息:
<action name="user" class="userActionBean" method="openSession"> <result name="success" type="dispatcher"> /jsp/user/index.jsp </result> </action>
原来的旧的初始化列表页面以及查询功能对应方法,open(),:
//首页,显示人员列表 @SuppressWarnings({ "unchecked", "rawtypes" }) public String open() throws Exception { //cityMap = (Map<String, String>) this.getSession().getAttribute("area"); if (this.getSession().getAttribute("person") != null) { this.person = (Person)this.getSession().getAttribute("person"); } Map<String,String> map = this.userManager.getAllOrg(); this.getRequest().setAttribute("cityMap", map); //取站点,源头,移动检测车等信息 listsite = new ArrayList<SiteShow>(); if(StringUitl.isNullOrEmpty(person)){ String type = person.getStaionType(); if(type.equals("0")){ List<CtrlSite> lsit = this.userManager.getListCtrlSite(person.getCity()); if(StringUitl.isNullOrEmpty(lsit)){ for (CtrlSite cs : lsit) { if(StringUitl.isNullOrEmpty(cs)){ listsite.add(new SiteShow(cs.getCtrlCode(),cs.getCtrlSiteName())); } } } }else if (type.equals("1")){ List<MobDet> list = this.userManager.getListMobDet(person.getCity()); if(StringUitl.isNullOrEmpty(list)){ for (MobDet cs : list) { if(StringUitl.isNullOrEmpty(cs)){ if(StringUitl.isNullOrEmpty(cs)){ listsite.add(new SiteShow(cs.getMobDetCarCode(),cs.getMobDetCarName())); } } } } }else if(type.equals("2")){ List<SourceCom> list = this.userManager.getListSourceCom(person.getCity()); if(StringUitl.isNullOrEmpty(list)){ for (SourceCom cs : list) { listsite.add(new SiteShow(cs.getSourceComCode(),cs.getSourceComName())); } } }else if(type.equals("3")){ List<Zcb> zcblist_= userManager.findByCode(person.getCity()); if(StringUitl.isNullOrEmpty(zcblist_)){ for (Zcb zcb : zcblist_) { listsite.add(new SiteShow(zcb.getZcbCode(),zcb.getShortName())); } } } } List<Person> list = personManager.getPersonList(person,this.getUserInfo(),StringUitl.convertMap2String((Map)this.getSession().getAttribute("area"))); //List<Person> list = personManager.getPersonList(); //将用户拥有的角色提取出来 for(Person p : list){ String role = ""; User user = p.getUser(); if(StringUitl.isNullOrEmpty(user)){ List<UsersRoles> l = userManager.searchUserRoles(user.getId()); if(StringUitl.isNullOrEmpty(l)){ for (UsersRoles obj : l) { //System.out.println(obj.getRole().getName()); role = obj.getRole().getName()+","+role; } } } if(role.length() > 0){ role = role.substring(0,role.length()-1); } p.setRole(role); } this.getRequest().setAttribute("list", list); this.getRequest().setAttribute("nps", person); return SUCCESS; }
open()配置信息:
<action name="userListFirst" class="userActionBean" method="open"> <result name="success" type="dispatcher"> /jsp/user/index.jsp </result> </action>
比如再列举一个列表页面修改操作的相关配置(成功之后是转到userListFirst而不是user):
<action name="updateUser" class="userActionBean" method="update"> <result name="success" type="redirectAction"> <param name="actionName">userListFirst</param> </result> </action>
并且需要注意的是:初始化列表处的链接需要配置成user.do而不是userListFirst.do
发表评论
-
领域精通涉及技术点(不分先后)
2017-12-20 19:35 613Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1631我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1426String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1173今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 454讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 968emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 439BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5751、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2960http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2299有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 1008spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 701java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 514诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 503http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 470Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 400要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 487spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1074需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 868按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 487912345
相关推荐
【标题】"简单jsp动态页面增删改查操作源代码"是针对初学者设计的一份教程,主要展示了如何使用JSP(JavaServer Pages)技术来创建动态网页,并实现在网页上对数据库的数据进行添加、删除、修改和查询等基本操作。...
用户可以通过JSP页面输入员工信息,进行增删改查操作,JSP页面会将这些请求转发给Servlet处理。 Servlet是Java提供的一种服务器端的编程模型,用于接收和响应HTTP请求。在这个系统中,Servlet作为控制器...
在这个实例中,“struts2实现在jsp页面对员工的增删改查操作”意味着我们将探讨如何使用Struts2框架来处理员工管理的基本功能,包括添加、删除、更新和查询员工信息,并在JSP页面上展示这些操作。 首先,我们需要...
3. **EL(Expression Language)**:用于在JSP页面中访问JavaBeans属性,如`${bean.property}`。 4. **Servlet**:虽然JSP文件最终会被转换为Servlet,但在实现CRUD时,我们可能还需要自定义Servlet来处理HTTP请求和...
JSP页面由JSP元素组成,包括指令、脚本元素和动作元素,它们在服务器上被编译为Servlet执行。 **Servlet**是Java EE规范的一部分,它提供了一种服务器端处理HTTP请求并返回响应的方法。Servlet通过继承`HttpServlet...
如`startconn()`用于建立连接,`endconn()`用于关闭连接,`update(String sql)`用于执行更新操作(如插入、删除、更新记录),以及`getList1(String sql)`用于获取查询结果并将其封装为`ArrayList<stu>`返回。...
在IT行业中,构建一个简单的登录页面并实现增删改查功能是常见的Web开发任务,尤其在初学者和小型项目中非常普遍。这个项目利用了Java Servlet、JSP(JavaServer Pages)以及MySQL数据库来完成这一目标。下面我们将...
2. **读取**:展示所有员工数据通常涉及到分页,我们可以通过传递当前页码和每页显示的数量到Action,Action查询数据库并返回当前页的数据,然后将结果传给JSP页面进行展示。JSP可以使用JSTL(JavaServer Pages ...
当用户在JSP页面上进行增删改查操作时,对应的HTTP请求会被发送到Servlet,Servlet会解析请求参数,执行相应的数据库操作,然后返回结果或者跳转到新的JSP页面。 接着,`javabean`是Java的一个设计模式,用于封装...
在这个通讯录系统中,Servlet作为业务逻辑处理的中心,接收来自JSP页面的请求,执行相应的增删改查操作,并将结果返回给JSP页面显示。 3. **数据库交互** 项目使用了SQL(Structured Query Language)来存储和操作...
在JSP页面中,我们可以使用JSTL的 `<c:forEach>` 标签来遍历 `ProductDao` 返回的列表,展示商品信息。对于增删改操作,通常会创建相应的DAO方法,比如 `addProduct`, `deleteProduct`, `updateProduct`,并在JSP中...
【描述】中提到的"jsp、servlet 实现的增删查改"是指在Web应用中,通过JSP页面接收用户输入,然后通过Servlet来处理这些请求,执行对应的数据库操作。JSP是一种动态网页技术,它可以将HTML代码和Java代码混合编写,...
综上所述,解决"jsp页面加载时提示loading"的问题需要从多方面进行排查和优化,包括页面内容优化、服务器性能提升、网络条件改善、代码错误检查、缓存策略调整、服务器配置优化、数据库性能优化、AJAX请求优化、...
"Se.rar_jsp增删_jsp增删改查"这个压缩包文件的内容显然涉及到一个基于JSP的学生管理系统,它实现了对学生的数据进行添加、删除、修改和查询等基本操作。下面我们将详细探讨这些知识点。 首先,让我们了解JSP的基础...
9. **创建JSP页面**:编写JSP文件,如`list.jsp`、`add.jsp`、`edit.jsp`和`delete.jsp`,用于显示列表、添加、编辑和删除操作。使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签...
这是一个基于Java技术的简易JSP信息管理程序,它采用了经典的MVC(Model-View-Controller)设计模式,并实现了数据的分页、增删改查功能。在这个程序中,JSP作为视图层,负责展示数据;MVC模式帮助分离业务逻辑和...
- 包含JSP页面相关的文件,这里没有给出具体的示例代码,但通常会包含表单提交、显示查询结果等功能。 #### 四、总结 本文详细介绍了如何使用JSP技术结合SQL Server 2005数据库实现增删改查功能的具体实现过程。...
5. **结果返回**:处理完成后,服务器将更新后的信息返回给客户端,可能是一个新的JSP页面,显示操作的结果。 **www.pudn.com.txt** 这个文件可能是来源于pudn.com网站的一个文本文件,可能包含了项目的介绍、作者...
**查(Query)** 功能是检索数据库中的信息,这可能通过SELECT SQL语句实现,Servlet根据用户请求的条件(如ID、日期范围等)来构造查询语句,执行后返回结果集,这些结果最终会在JSP页面上显示给用户。 **标签** ...
开发者需要编写SQL语句来与数据库进行交互,执行增、删、改、查操作。 Servlet是Java Web应用中的核心组件,它负责接收HTTP请求并生成HTTP响应。在本项目中,Servlet作为JSP和数据库之间的桥梁,处理用户通过JSP...