- 浏览: 83436 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
huang_yong:
也可以使用loadOnStartup=0,这样是不是比1更早初 ...
loadOnStartup -
elfasd:
good,thank you !
解决gson格式化日期不规范导致javascript无法解析日期的问题 -
joe243634401:
coollzh 写道我也是这么写的,为甚么会出现404找不到的 ...
loadOnStartup -
coollzh:
我也是这么写的,为甚么会出现404找不到的现象,用web.xm ...
loadOnStartup
先看web.xml代码:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <jsp-config> <taglib> <taglib-uri>/tags/lpm</taglib-uri> //跟上面定义的uri值一样 <taglib-location>/WEB-INF/lpm.tld</taglib-location> //写文件所在的路径 </taglib> </jsp-config> </web-app>
在看/WEB-INF/lpm.tld文件代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.2</tlibversion> <jspversion>1.1</jspversion> <shortname>lpm</shortname> <!-- 使用标签时的前缀 --> <uri>/tags/lpm</uri> <tag> <name>mytaglib</name> <!-- 使用时跟在前缀后的名字,组合成一个标签 --> <tagclass>com.china.page.taglibpage</tagclass> <!-- 在这里写刚才定义好的类 --> <bodycontent>jsp</bodycontent> <!--可以为empty和jsp,如果为empty,开始标签和结束标签之间如果有jsp内容就会出错 --> <attribute> <name>formid</name> <!--定义此标签可以用的属性名--> <required>true</required> <!-- 表示这个属性是否可以为空,为true一定要有属性值 --> <rtexprvalue>true</rtexprvalue> <!-- 表示是否可以使用JSP表达式 --> </attribute> </tag> </taglib>
首页index.jsp加一个跳转:
<a href="lpm/step.action">aaa</a>
action代码:
package com.china.action; import java.util.ArrayList; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import com.china.model.persion; import com.china.page.Pageinfo; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; @Namespace("/lpm") public class Lpmcon extends ActionSupport{ @Action(value="step", results={@Result(name="Today",location="/test/abc.jsp")}) public String getRes(){ HttpServletRequest request=ServletActionContext.getRequest(); try{ EntityManagerFactory ef=Persistence.createEntityManagerFactory("mysql"); EntityManager em=ef.createEntityManager(); Query qu=em.createQuery("from persion order by userid"); int count=qu.getResultList().size(); Pageinfo pageinfo=new Pageinfo(); pageinfo.setCount(count); String temp=request.getParameter("curpage"); if(temp!=null){ pageinfo.setCurpage(Integer.parseInt(temp)); } List list=qu.setFirstResult((pageinfo.getCurpage()-1)*pageinfo.getPagesize()) .setMaxResults(pageinfo.getPagesize()) .getResultList(); request.setAttribute("pageinfo", pageinfo); request.setAttribute("list",list); }catch(Exception e){ e.printStackTrace(); } return "Today"; } }
Pageinfo代码:
package com.china.page; public class Pageinfo { int count; //总记录条数 int pagesize=10; //每页有几条 int pagecount; //总共有几页 int curpage=1; public int getCurpage() { return curpage; } public void setCurpage(int curpage) { this.curpage = curpage; } public int getPagesize() { return pagesize; } public void setPagesize(int pagesize) { this.pagesize = pagesize; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public int getPagecount() { if(count%pagesize==0){ pagecount=count/pagesize; }else{ pagecount=count/pagesize+1; } return pagecount; } public void setPagecount(int pagecount) { this.pagecount = pagecount; } }
自定义标签类com.china.page.taglibpage的代码:
package com.china.page; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class taglibpage extends TagSupport{ //要继承类TagSupport通过覆盖它的方法来实现 private String formid; private Pageinfo pageinfo; public String getFormid() { return formid; } public void setFormid(String formid) { this.formid = formid; } public Pageinfo getPageinfo() { return pageinfo; } public void setPageinfo(Pageinfo pageinfo) { this.pageinfo = pageinfo; } @Override public int doStartTag() throws JspException { try { HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();//pageContext是继承的类TagSupport的属性 pageinfo=(Pageinfo) request.getAttribute("pageinfo"); int curpage=pageinfo.getCurpage(); int lastpage=pageinfo.getPagecount(); int nextpage=curpage+1; int previouspage=curpage-1; JspWriter pw=pageContext.getOut(); //不要用PringWriter,要用JspWriter,否则无法控制其位置 if(curpage==1){ pw.print(firstpage()); pw.print("<label style='font-size:12px;color:#000000'>首页</label> "); pw.println(previouspage(previouspage)); pw.print("<label style='font-size:12px;color:#000000'>上一页</label> "); }else{ pw.print(firstpage()); pw.print("<a href='javascript:firstpage()' style='font-size:12px;color:#000000'>首页</a> "); pw.println(previouspage(previouspage)); pw.print("<a href='javascript:previouspage()' style='font-size:12px;color:#000000'>上一页</a> "); } if(curpage==lastpage){ pw.println(nextpage(nextpage)); pw.print("<label style='font-size:12px;color:#000000'>下一页</label> "); pw.print(lastpage(lastpage)); pw.print("<label style='font-size:12px;color:#000000'>尾页</label> "); }else{ pw.println(nextpage(nextpage)); pw.print("<a href='javascript:nextpage()' style='font-size:12px;color:#000000'>下一页</a> "); pw.print(lastpage(lastpage)); pw.print("<a href='javascript:lastpage()' style='font-size:12px;color:#000000'>尾页</a> "); } pw.print(" "); pw.print("<span style='font-size:12px;color:#000000'>"); pw.print("["); pw.print(curpage); pw.print("/"); pw.print(pageinfo.getPagecount()); pw.print("]"); pw.print(" "); pw.print("共"); pw.print(pageinfo.getCount()); pw.print("条"); pw.print("</span>"); } catch (IOException e) { e.printStackTrace(); } // return SKIP_BODY; //跳过开始和结束标签之间的代码。 return EVAL_BODY_INCLUDE; //将body的内容输出到存在的输出流中,包括是jsp代码,也可以被输出 } /** * 首页 * @return */ public String firstpage(){ StringBuffer sb=new StringBuffer(); sb.append("<SCRIPT type='text/javascript'>"); sb.append(" function firstpage(){"); sb.append(" var theform=document.getElementById('"); sb.append(this.formid); sb.append("');"); sb.append(" theform.action=theform.action+'?curpage=1'; "); sb.append(" document.location.href=theform.action;"); sb.append("}"); sb.append("</SCRIPT>"); return sb.toString(); } /** * 上一页 * @param previouspage * @return */ public String previouspage(int previouspage){ StringBuffer sb=new StringBuffer(); sb.append("<SCRIPT type='text/javascript'>"); sb.append(" function previouspage(){"); sb.append(" var theform=document.getElementById('"); sb.append(this.formid); sb.append("');"); sb.append(" theform.action=theform.action+'?curpage=").append(previouspage+"';"); sb.append(" document.location.href=theform.action;"); sb.append("}"); sb.append("</SCRIPT>"); return sb.toString(); } /** * 下一页 * @param nextpage * @return */ public String nextpage(int nextpage){ StringBuffer sb=new StringBuffer(); sb.append("<SCRIPT type='text/javascript'>"); sb.append(" function nextpage(){"); sb.append(" var theform=document.getElementById('"); sb.append(this.formid); sb.append("');"); sb.append(" theform.action=theform.action+'?curpage=").append(nextpage+"';"); sb.append(" document.location.href=theform.action;"); sb.append("}"); sb.append("</SCRIPT>"); return sb.toString(); } /** * 尾页 * @param lastpage * @return */ public String lastpage(int lastpage){ StringBuffer sb=new StringBuffer(); sb.append("<SCRIPT type='text/javascript'>\n"); sb.append(" function lastpage(){"); sb.append(" var theform=document.getElementById('"); sb.append(this.formid); sb.append("');"); sb.append(" theform.action=theform.action+'?curpage=").append(lastpage+"';"); sb.append(" document.location.href=theform.action;"); sb.append("}\n"); sb.append("</SCRIPT>"); return sb.toString(); } }
显示分页的界面abc.jsp代码为:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <%@taglib prefix="lpm" uri="/tags/lpm" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'abc.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="<%=basePath%>lpm/step.action" id="fmcc"> <table style="border:1px solid black"> <thead> <tr style="border:1px solid black"> <th>用户编号</th><th>用户名</th> </tr> </thead> <tbody> <s:iterator value="#request.list" var="p"> <tr style="border:1px solid black"> <td><s:property value="#p.userid"/></td> <td><s:property value="#p.name"/></td> </tr> </s:iterator> </tbody> </table> </form> <div align="left"> <lpm:mytaglib formid="fmcc" ></lpm:mytaglib> </div> </body> </html>
model层Persion实体类代码为:
package com.china.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="persion") public class persion { private Integer userid; private String name; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public Integer getUserid() { return userid; } public void setUserid(Integer userid) { this.userid = userid; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
persistence.xml代码:
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="mysql" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:comp/env/jdbc/mysql</jta-data-source> <class>com.china.model.persion</class> </persistence-unit> </persistence>
tomcat中server.xml配置信息:
<Context path="/pageTest" docBase="/pageTest" reloadable="false" crossContext="true"> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="2" maxWait="10000" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/lpm?user=root&password=" /> </Context>
- pageTest.rar (14.6 KB)
- 下载次数: 1
发表评论
-
超链接标签a的效果设计
2013-01-14 10:16 819<style type="text/css& ... -
统计访问次数的简易方法
2012-11-23 09:23 1472public class Count { private ... -
防止未经过登录验证访问项目里的jsp页面
2012-06-27 17:44 730<% String havelogin=(St ... -
web布局框架小例子
2012-06-26 11:30 844web布局框架小例子 -
form.submit()方法缺陷
2011-12-26 17:13 829<SCRIPT type='text/javascrip ... -
悬浮框提示
2011-12-13 09:48 768www.2345.com/?k290146180 ... -
日期控件
2011-11-17 15:55 739My97DatePicker是一个更全面,更人性化,并且速度一 ... -
一个简单的验证码小例子
2011-11-11 14:34 749jsp代码: <form action=& ... -
将数据导出到excel
2011-11-08 10:00 810前台jsp调用代码: function outexe(){ ... -
下载文件
2011-11-07 16:37 658前台jsp页面的javascript代码: functi ... -
jsp自定义标签
2011-11-04 17:17 792首先写下此标签要实现的功能的类,在这里假如此标签的功能是输出h ...
相关推荐
这个项目中的分页功能可能采用了JSTL的`<c:forEach>`标签配合自定义的分页标签库,或者使用了Spring或Struts1的插件来实现。分页不仅优化了用户体验,也减轻了服务器负载。 综合以上技术,这个项目展示了如何在一个...
5. **前端展示**:前端接收到分页数据后,使用JavaScript或者JSP标签库(如DisplayTag)渲染页面,展示分页内容。用户交互部分,如页码链接的激活状态和禁用状态,以及“下一页”、“上一页”按钮的状态,也需要在...
2. **创建DAO**:实现分页查询的方法,使用Hibernate的Session或SessionFactory进行数据库操作。 3. **配置Service**:在Spring中声明Service,注入DAO,实现业务逻辑,包括计算总页数、获取当前页数据等。 4. **...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2主要用于MVC(Model-View-Controller)架构的实现,Spring作为全面的框架提供了依赖注入、事务管理、AOP(面向切面编程)等...
**Struts分页** 在Struts中,实现分页通常涉及以下几个步骤: 1. **Action类**:创建一个专门处理分页请求的Action类,该类需要获取并处理关于当前页面和每页显示条数的信息。 2. **Form Bean**:定义一个Form Bean...
在实际开发中,可能还会使用到一些开源的分页组件,如Spring Data JPA的PagingAndSortingRepository,或者自定义的分页拦截器,以简化分页实现和提高性能。同时,考虑到性能优化,通常会缓存总记录数,避免每次分页...
在SSH框架中,分页通常通过Hibernate的Criteria API或者HQL来实现,也可以利用Struts2的拦截器或者自定义插件来处理分页逻辑。在Oracle数据库中,可以使用ROWNUM伪列或分页函数(如DBMS_RLS.PAGE_QUERY)来实现分页...
在Struts中,可以通过自定义拦截器或者Action来实现分页。在Hibernate中,可以使用Criteria、HQL(Hibernate Query Language)或SQL的Limit子句进行分页查询。Spring提供了Pageable接口和Page对象,配合JPA(Java ...
典型模型与项目实战大全>> 出版社: 清华大学出版社; 第1版 (2011年1月1日) 平装: 922页 ...第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 商业银行设备巡检系统(Struts 2.X+Spring+Hibernate)
典型模型与项目实战大全>> 出版社: 清华大学出版社; 第1版 (2011年1月1日) 平装: 922页 ...第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 商业银行设备巡检系统(Struts 2.X+Spring+Hibernate)
典型模型与项目实战大全>> 出版社: 清华大学出版社; 第1版 (2011年1月1日) 平装: 922页 ...第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 商业银行设备巡检系统(Struts 2.X+Spring+Hibernate)
6. **创建JSP页面**:在JSP页面上,使用JSTL或其他标签库(如Struts的DisplayTag库)来显示数据并构建分页链接。这些链接会携带页码参数,当用户点击时,会触发新的Action请求。 7. **处理用户交互**:当用户点击...
SSH(Struts2 + Spring...综上所述,SSH框架下的分页实现涉及Struts2、Spring和Hibernate等多个层面,通过合理设计和优化,可以提供高效且友好的分页功能。开发者需要熟悉这些组件的用法,并结合实际项目需求进行调整。
在Oracle分页中,Hibernate通过HQL(Hibernate Query Language)或SQL来执行查询,并支持Criteria、Query和Session的Criteria API等方式实现分页。通常,我们会通过设置`setFirstResult`和`setMaxResults`方法来指定...
典型模型与项目实战大全>> 出版社: 清华大学出版社; 第1版 (2011年1月1日) 平装: 922页 ...第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 商业银行设备巡检系统(Struts 2.X+Spring+Hibernate)
2. 数据库查询部分,结合Hibernate的分页功能,可以在Service或DAO层完成,然后返回Page对象给Action,再由Struts2的插件或自定义标签处理前端显示。 总结,分页查询在Web开发中扮演着关键角色,能够有效地管理和...
MyBatis可以通过动态SQL实现分页,同样有`LIMIT`和`OFFSET`方式,或者使用自定义插件如PageHelper,它提供了拦截器和分页对象,自动处理分页逻辑,使代码更简洁。 6. **Spring Data JPA分页**: Spring Data JPA...
在分页中,Struts2主要通过Action来处理请求,定义分页参数,并转发到对应的JSP页面。Action类中可以定义如当前页码(currentPage)和每页显示数量(itemsPerPage)等分页参数,然后通过业务层获取相应数据。 二、...