to:syuhans(S玉涵S)
能给我一份么?谢谢了 [email protected]
能给我一份么?谢谢了 [email protected]
解决方案 »
- 用相同路径的类替换jar包中的类问题
- gt-grid 更新多条数据但是gridServerHandler.getUpdatedRecords()只能取得一条记录
- spring注入问题
- ssh 开发,一个jsp 可以对应多个action 吗?
- 关于一个很难缠的异常的问题,请大家进来看看,先谢过了!!
- 为什么不能级联保存?
- 新学struts,data-sources 配完了,提示找不到类'com.microsoft.jdbc.sqlserver.SQLServerDriver'
- 哪位高手来帮帮我小菜鸟啊
- 困扰很久了,请问在Struts中如何处理select(multiple)
- 我的ORACLE怎么连不上,帮忙啊!
- 【使用 Struts 一定要 Apache 嘛?】
- 一个关于在自己的applet类中import其他自定义包类的问题?
[email protected]
[email protected]
谢谢!
我看了你给我发的,首先,表示感谢,我仔细研究了一下你给我的程序,你的分页的地方是调用了javabean,来取得当前的页数和总记录数。我也这么做了,但是问题是,我每次取得当前页数,都是不变的,都是 1。但是我点击下一页时,到下一页,我认为取得的当前页应该为 2才合理。我试了一下,好像就算我给action传递当前页参数。到下一页时调用javabean得到的当前页,还是初始化bean时候设置的值,还是1,而且我已经把bean的作用域,设置成session了,还是有上述问题。
实现PageForm,其成员变量如下:
currentPage - 当前页数
lastPage - 最后页标志,=1 表示true,=0 表示false
pageDirection - 页面方向,其值为"first"、"back"、"next"以及"last",分别表示首页,
前页,后页,末页
totalPage - 总页面数
totalCount - 总记录数当页面提交后,在actionBean中取出这些值,根据pageDirection的值进行计算,然后在页面中显示
wc.java文件:
package emptyprj;import org.apache.struts.action.ActionForm;public final class wc extends ActionForm
{
private String 颁布时间; private String 制度内容; private String 制度名称; private int 编号; //myfiledata; public int get编号()
{
return (this.编号);
} public void set编号(int 编号)
{
this.编号=编号;
}
public String get制度名称()
{
return (this.制度名称);
} public void set制度名称(String 制度名称)
{
this.制度名称=制度名称;
}
public String get制度内容()
{
return (this.制度内容);
} public void set制度内容(String 制度内容)
{
this.制度内容=制度内容;
}
public String get颁布时间()
{
return (this.颁布时间);
} public void set颁布时间(String 颁布时间)
{
this.颁布时间=颁布时间;
}
}
---------------------------------------------------------------------
wcDAO.java文件:
package emptyprj;
import emptyprj.wc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import java.util.Collection;
import java.util.ArrayList;public class wcDAO { private Connection con;
private int rowCount;
private int pageCount;
private int length;
private String pagestr;
public int getLength() { return (this.length); }
public void setLength(int length) { this.length=length; }
public String getPagestr(int ipage)
{
String strPage="";
if(getLength()>0)
{
strPage+="共";
strPage+=String.valueOf(rowCount);
strPage+="条记录,共";
strPage+=String.valueOf(pageCount);
strPage+="页,当前是第";
strPage+=String.valueOf(ipage);
strPage+="页, ";
int istart,iend;
istart=ipage-5;
if(istart<0) {istart=0;}
iend=istart+10;
if(iend>pageCount) {iend=pageCount;}
istart=iend-10;
if(istart<0) {istart=0;}
for(int i=istart;i<iend;i++)
{
strPage+="<a href='wcAction.do?action=find&page=";
strPage+=String.valueOf(i+1);
strPage+="'>";
strPage+=String.valueOf(i+1);
strPage+="</a>";
strPage+=" ";
}
}
this.pagestr=strPage;
return strPage;
} public wcDAO(Connection con) {
this.con = con;
} public void create(wc m_wc) throws SQLException {
PreparedStatement ps = null;
//<createSQL>
String sql = "INSERT INTO dbo.实验室管理制度 VALUES (?,?,?,?)";
//</createSQL>
try {
if (con.isClosed()) {
throw new IllegalStateException("error.unexpected");
}
ps = con.prepareStatement(sql);
//<create>
ps.setInt(1,m_wc.get编号());
ps.setString(2,m_wc.get制度名称());
ps.setString(3,m_wc.get制度内容());
ps.setString(4,m_wc.get颁布时间());
//</create> if (ps.executeUpdate() != 1) {
throw new SQLException ("error.create.wc");
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
} finally {
try {
if (ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
}
}
} public void update(wc m_wc,String keyID) {
PreparedStatement ps = null;
//<updateSQL>
String sql = "UPDATE dbo.实验室管理制度 SET 编号 = ?,制度名称 = ?,制度内容 = ?,颁布时间 = ? WHERE 编号 = ?";
//</updateSQL>
try {
if (con.isClosed()) {
throw new IllegalStateException("error.unexpected");
}
ps = con.prepareStatement(sql);
//<update>
ps.setInt(1,m_wc.get编号());
ps.setString(2,m_wc.get制度名称());
ps.setString(3,m_wc.get制度内容());
ps.setString(4,m_wc.get颁布时间());
//</update> ///////////////
//<updatekeyID>
ps.setInt(5,java.lang.Integer.parseInt(keyID,10));
//</updatekeyID>
if (ps.executeUpdate() != 1) {
throw new SQLException (
"error.removed.wc");
} } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
} finally {
try {
if (ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
}
}
}
public void remove(String sql) {
PreparedStatement ps = null;
try { if (con.isClosed()) {
throw new IllegalStateException("error.unexpected");
} ps = con.prepareStatement(sql);
if (ps.executeUpdate() != 1) {
throw new SQLException (
"error.removed.wc");
} } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
} finally {
try {
if (ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
}
}
}
public Collection findSQL(String sql,int ipage) {
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList list = new ArrayList(); try {
if (con.isClosed()) {
throw new IllegalStateException("error.unexpected");
}
ps = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = ps.executeQuery();
rs.absolute(-1);
rowCount=rs.getRow();
int offset=1;
int pagesize=getLength();
if(getLength()<1)
{
pagesize=rowCount;
pageCount=1;
}
else
{
pageCount=rowCount/getLength()+((rowCount%getLength())>0?1:0);
offset=(ipage-1)*getLength()+1;
if(offset<1)offset=1;
if(offset>rowCount)offset=rowCount;
}
rs.absolute(offset);
for(int i=0;i<pagesize;i++) {
wc m_wc= new wc();
//<find>
m_wc.set编号(rs.getInt(1));
m_wc.set制度名称(rs.getString(2));
m_wc.set制度内容(rs.getString(3));
m_wc.set颁布时间(rs.getString(4));
//</find> rs.next();
list.add(m_wc); } return list; } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
} finally {
try {
if (ps != null)
ps.close();
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
}
}
}}
package emptyprj;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;public final class wcForm extends ActionForm
{
private String 颁布时间; private String 制度内容; private String 制度名称; private int 编号; private int page; private String pagestr; private String action; private String mybeanvariable1; //myfiledata; public String getMybeanvariable1()
{
return (this.mybeanvariable1);
} public void setMybeanvariable1(String mybeanvariable1)
{
this.mybeanvariable1=mybeanvariable1;
}
public String getAction()
{
return (this.action);
} public void setAction(String action)
{
this.action=action;
}
public String getPagestr()
{
return (this.pagestr);
} public void setPagestr(String pagestr)
{
this.pagestr=pagestr;
}
public int getPage()
{
return (this.page);
} public void setPage(int page)
{
this.page=page;
}
public int get编号()
{
return (this.编号);
} public void set编号(int 编号)
{
this.编号=编号;
}
public String get制度名称()
{
return (this.制度名称);
} public void set制度名称(String 制度名称)
{
this.制度名称=制度名称;
}
public String get制度内容()
{
return (this.制度内容);
} public void set制度内容(String 制度内容)
{
this.制度内容=制度内容;
}
public String get颁布时间()
{
return (this.颁布时间);
} public void set颁布时间(String 颁布时间)
{
this.颁布时间=颁布时间;
}}
---------------------------------------------
wcAction.java文件:package emptyprj;import emptyprj.jdbc.util.ConnectionPool;
import emptyprj.wcDAO;import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.ModuleException;
import org.apache.struts.util.MessageResources;import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;public final class wcAction extends Action
{
// 变量定义:
private Log log = LogFactory.getLog("org.apache.struts.webapp.Example"); private ConnectionPool pool; public wcAction() {
pool = ConnectionPool.getInstance();
}
//函数定义:
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Extract attributes and parameters we will need
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
wcForm m_wcForm = (wcForm) form;
Connection con = null; try
{
con = pool.getConnection();
wcDAO m_wcDAO = new wcDAO(con); String action=request.getParameter("action");
if(action==null)action="find";
if(action.equals("delete"))
{
String expression=request.getParameter("expression");
m_wcDAO.removeID(expression);
}
////////////
if(action.equals("update"))
{
String expression=request.getParameter("expression");
wc m_wc= new wc();
//<update>
m_wc.set编号(m_wcForm.get编号());
m_wc.set制度名称(m_wcForm.get制度名称());
m_wc.set制度内容(m_wcForm.get制度内容());
m_wc.set颁布时间(m_wcForm.get颁布时间());
//</update>
m_wcDAO.update(m_wc,expression);
}
///////////////
//<sqlstr>
String sql="SELECT * FROM dbo.实验室管理制度";
//</sqlstr> //<分页>
m_wcDAO.setLength(10);//设置每页显示记录数
int ipage;//当前页
try
{
String page=request.getParameter("page");//分页参数,读取请求的当前页
ipage=java.lang.Integer.parseInt(page,10);
}
catch (Exception e)
{
ipage=m_wcForm.getPage();
}
Collection col = m_wcDAO.findSQL(sql,ipage);//通过DAO对象查询数据
request.setAttribute("wc",col); //保存数据
String pagestr=m_wcDAO.getPagestr(ipage);//分页字符串,分页内容
m_wcForm.setPagestr(pagestr);
m_wcForm.setAction(action);
request.setAttribute("wcForm",m_wcForm);
//</分页>
return mapping.findForward("success");
}
catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException("Unable to get connection.");
}
finally
{
try
{
if (con != null)
con.close();
}
catch (SQLException e)
{
throw new RuntimeException(e.getMessage());
}
} }}
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ 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" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %><html:html>
<head>
<title></title>
<html:base/>
</head>
<body bgcolor="white">
<table cellPadding=2 width="80%" border=2>
<tr>
<td><span CONTENTEDITABLE=true>编号</span></td>
<td><span CONTENTEDITABLE=true>制度名称</span></td>
<td><span CONTENTEDITABLE=true>制度内容</span></td>
<td><span CONTENTEDITABLE=true>颁布时间</span></td>
<td><span CONTENTEDITABLE=true>删除</span></td>
<td><span CONTENTEDITABLE=true>编辑</span></td>
<td><span CONTENTEDITABLE=true>链接</span></td></tr>
<logic:iterate name='wc' id='wc' type='emptyprj.wc' scope='request'>
<logic:notEqual name='wcForm' property='action' value='edit'>
<tr>
<td><bean:write name='wc' property='编号' /></td>
<td><bean:write name='wc' property='制度名称' /></td>
<td><bean:write name='wc' property='制度内容' /></td>
<td><bean:write name='wc' property='颁布时间' /></td>
<td><a href="wcAction.do?action=delete&expression=<bean:write name='wc' property='编号' />">删除</a></td>
<td><a href="wcAction.do?action=edit&expression=<bean:write name='wc' property='编号' />">编辑</a></td>
<td><a href="wcAction.do?action=link&expression=<bean:write name='wc' property='编号' />">链接</a></td></tr>
</logic:notEqual>
<logic:equal name='wcForm' property='action' value='edit'>
<tr>
<form method='post' name='wcForm' action="/lyk/wcAction.do?action=update&expression=<bean:write name='wc' property='编号' />">
<td><html:text name='wc' property='编号' /></td>
<td><html:text name='wc' property='制度名称' /></td>
<td><html:text name='wc' property='制度内容' /></td>
<td><html:text name='wc' property='颁布时间' /></td>
<td><a href="wcAction.do?action=delete&expression=<bean:write name='wc' property='编号' />">删除</a></td>
<td><html:submit value='更新'></html:submit></form ><html:form method='post' action='/wcAction.do?action=reset'><html:submit value='取消'></html:submit>
</html:form ></td>
<td><a href="wcAction.do?action=link&expression=<bean:write name='wc' property='编号' />">链接</a></td></tr>
</logic:equal>
</logic:iterate><tr><td align=middle colSpan=8 ><bean:write property='pagestr' name='wcForm' filter='false' /></td></tr></tr>
</table>
</body>
</html:html>
---------------------------------------------
wc.jsp文件:
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ 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" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %><html:html>
<head>
<title></title>
<html:base/>
</head>
<body bgcolor="white">
<html:form action="/wcAction.do" method="post">
<html:text property="mybeanvariable1" />
<html:submit value="提交" />
<html:reset value="重写" />
</html:form>
</body>
</html:html>
我给你的那个程序,是我转发的,我这几天也在研究,收获不小,但还没最终搞明白,我这几天正在研究struts,主要是相结合stuts做出来,但也是没有成功
万分感谢。我要回去好好研究研究。
to syuhans:
我用另外的一种方法已经可以分页了。其中组织分页字符串的地方我是在jsp端组织的。
具体代码如下:
<%
String sPageCount=(String)request.getAttribute("pCount");
int iPageCount=Integer.valueOf(sPageCount).intValue();
String sPageIndex = (String)request.getAttribute("pIndex");
int iPageIndex = Integer.valueOf(sPageIndex).intValue();
System.out.println(iPageCount);
System.out.println(iPageIndex);
String str = "";
String str1 = "";
String str2 = "";
String str3 = "";
String str4 = "";
if(iPageIndex>iPageCount)
str = "";
if(iPageIndex<iPageCount&&iPageIndex==1)
{
str1 = "<table><tr valign=baseline align=center>\n\r<td class='fr'>共 <font color='#FF0000'>";
str2 ="</font> 条记录 共 <font color='#FF0000'>";
str3="</font> 页 当前是第 <font color='#FF0000'>"; str4="</font> 页 ";
str ="<a href='customerAction.do?flag=0'>下一页</a></td></tr></table>";
}
if(iPageCount==iPageIndex&&iPageIndex>1)
{
str1 = "<table><tr valign=baseline align=center>\n\r<td class='fr'>共 <font color='#FF0000'>";
str2 ="</font> 条记录 共 <font color='#FF0000'>";
str3="</font> 页 当前是第 <font color='#FF0000'>";
str4="</font> 页 ";
str ="<a href='customerAction.do?flag=2'>上一页</a></td></tr></table>"; }
if(iPageIndex>1&&iPageIndex<iPageCount)
{
str1 = "<table><tr valign=baseline align=center>\n\r<td class='fr'>共 <font color='#FF0000'>";
str2 ="</font> 条记录 共 <font color='#FF0000'>";
str3="</font> 页 当前是第 <font color='#FF0000'>";
str4="</font> 页 ";
str ="<a href='customerAction.do?flag=0'>下一页</a> <a href='customerAction.do?flag=2'>上一页</a></td></tr></table>"; }
%>
显示的时候这样做:<%=str1%><bean:write name="orderCarForm" property="rowCount"/><%=str2%><bean:write name="orderCarForm" property="pageCount"/><%=str3%><bean:write name="orderCarForm" property="showPage"/>/<bean:write name="orderCarForm" property="pageCount"/><%=str4%><%=str%> 结果运行正常。
我觉得这里不可以用<jsp:usebean>方法来做,我发现每当我这么调用的时候,容器都会重新生成 一个bean实例,这样当前页索引每次都是默认的第一页,我就得不到正确的 当前页索引参数。
我现在的这种做法可以解决问题,但是我不认为这是一种好方法,拿出来和大家一起讨论。请各位不吝赐教!!!!!谢谢!
你给我发的那个程序怎么运行不起来。我把相应的文件拷贝到我的web目录下。服务器启动时出了异常。我用的是weblogic服务器。
异常信息如下:
<2003-12-26 下午13时51分18秒 CST> <Error> <HTTP> <BEA-101216> <Servlet: "actio
failed to preload on startup in Web application: "jdcar".
javax.servlet.ServletException: org/apache/struts/legacy/GenericDataSource
at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStub
pl.java:906)
at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletSt
Impl.java:842)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStu
mpl.java:782)
at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAp
ervletContext.java:3236)
at weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebA
ServletContext.java:3181)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(Web
pServletContext.java:3154)
at weblogic.servlet.internal.HttpServer.preloadResources(HttpServer.ja
:654)
at weblogic.servlet.internal.WebService.preloadResources(WebService.ja
:483)
at weblogic.servlet.internal.ServletInitService.resume(ServletInitServ
e.java:30)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:964)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:359)
at weblogic.Server.main(Server.java:32)
>
sorry!我没去配,但我按找那个程序的思路,找出我需用的重新作了一下,也没通过。也许某个地方忽略了。我现在正在试着自己写
不在复制了
楼主看看http://expert.csdn.net/Expert/topic/2487/2487451.xml?temp=.8278009
这个帖子中
kui(kui) 的回复吧很全的
不过分要给我哦(呵呵玩笑啊,解决问题首要)
<%
String pag=null;
int pageId=1;
int pageSize=2;
pag=request.getParameter("page");
if(pag!=null){
pageId=Integer.parseInt(pag.trim());
}
%>
<table width="100%" border="0">
<tr align="center" bgcolor="#99CCFF">
<td height="28" width="8%">序号</td>
</tr>
<!-- 调用我写的一个标志,生成了一个结果集对象“readdep” -->
<tag:readDep />
<logic:iterate name="readdep" id="customer" offset="<%=(pageId-1)*pageSize+1+""%>" length="<%=pageSize+""%>">
<tr>
<td height="28"><bean:write name="customer" property="id"/></td>
</tr> </logic:iterate>
</table>
<table><tr><td><a href="index.jsp?page=1">首页</a></td><td><a href="index.jsp?page=<%=pageId-1%>">上一页</a></td>
<td><a href="index.jsp?page=<%=pageId+1%>">下一页</a></td><td><a href="index.jsp?page=4">尾页</a></td></tr></table>存在的问题是:我还没想到用什么简单的方法确定共有多少页,即尾页?
很容易实现的