分页显示的一个案例

主要是AJAX的综合应用,涉及到了数据库,XML,XSL,Javascript,html,servlet,jsp,css
其中没有做好的是删除后的自动刷新,有待更正!
起始页index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="CSS/c.css"/>
<title>小组管理系统</title>
<script type="text/javascript" language="javascript">
var xmlHttp;
var req_url;

function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlHttp=new XMLHttpRequest();
}
}

function startRequest(url){
req_url=url;
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET",req_url,true);
xmlHttp.send(null);
}

function handleStateChange(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
if(req_url.substring(0,24)=='servlet/ViewTeamsPageXml'){
var xslDoc=new ActiveXObject("Microsoft.XMLDOM");
xslDoc.async=false;
xslDoc.load("xsl/teaminfo.xsl");
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(xmlHttp.responseXML);
document.getElementById("show").innerHTML=xmlDoc.transformNode(xslDoc);
}
if(req_url.substring(0,18)=='servlet/DeleteTeam'){
var xslDoc=new ActiveXObject("Microsoft.XMLDOM");
xslDoc.async=false;
xslDoc.load("xsl/teaminfo.xsl");
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(xmlHttp.responseXML);
document.getElementById("show").innerHTML=xmlDoc.transformNode(xslDoc);
alert('删除成功');
}
}
}
}

</script>
</head>
<body bgcolor="#CCFFFF">
<div id="top">
<p>小组管理系统</p>
<p><a href="javascript:startRequest('servlet/ViewTeamsPageXml')">显示小组</a></p>
</div>
<div id="show">
</div>
</body>
</html>

业务类business.TeamBusiness.java

package business;

import java.sql.*;

import bean.Team;
import java.util.*;
import org.dom4j.*;
import database.DataSource;

public class TeamBusiness {
//将数据库中符合条件的数据作为一个document对象输出
public Document teamsPageXml(int currentPage,int n){
Document document=DocumentHelper.createDocument();
Element rootElm=document.addElement("teaminfo");
Element teamsElm=rootElm.addElement("teams");
Connection cn=null;
PreparedStatement pst=null;
ResultSet rs=null;
try{
cn=DataSource.getConnection();
String sql="select id,name,slogan,leader from team limit ?,?";
pst=cn.prepareStatement(sql);
pst.setInt(1, (currentPage-1)*n);
pst.setInt(2, n);
rs=pst.executeQuery();
while(rs.next()){
Element teamElm=teamsElm.addElement("team");
Element idElm=teamElm.addElement("id");
idElm.setText(rs.getString("id"));
Element nameElm=teamElm.addElement("name");
nameElm.setText(rs.getString("name"));
Element sloganElm=teamElm.addElement("slogan");
sloganElm.setText(rs.getString("slogan"));
Element leaderElm=teamElm.addElement("leader");
leaderElm.setText(rs.getString("leader"));
Element cpElm=teamElm.addElement("cp");
cpElm.setText(""+currentPage);
Element cnElm=teamElm.addElement("cn");
cnElm.setText(""+n);
}
//表示当前页的一些信息
Element currentPageElm=teamsElm.addElement("currentPage");
Element pageElm=currentPageElm.addElement("page");
pageElm.setText(""+currentPage);
Element nElm=currentPageElm.addElement("n");
nElm.setText(""+n);
//记录上一页的一些信息
if(currentPage>1){
Element lastPageElm=teamsElm.addElement("lastPage");
pageElm=lastPageElm.addElement("page");
pageElm.setText(""+(currentPage-1));
nElm=lastPageElm.addElement("n");
nElm.setText(""+n);
}
//为了记录下一页的信息,先判断数据库中有多少条记录
pst=cn.prepareStatement("select count(*) from team");
rs=pst.executeQuery();
rs.next();
int count=rs.getInt(1);
//记录下一页的一些信息
if(currentPage*n<count){
Element nextPageElm=teamsElm.addElement("nextPage");
pageElm=nextPageElm.addElement("page");
pageElm.setText(""+(currentPage+1));
nElm=nextPageElm.addElement("n");
nElm.setText(""+n);
}
//节点信息添加完毕!向请求对象返回document对象
}catch(Exception e){
e.printStackTrace();
Element errorElm=rootElm.addElement("error");
errorElm.setText(e.getMessage());
}finally{
//关闭所有应该关闭的连接
try{
rs.close();
pst.close();
cn.close();
}catch(Exception e){
e.printStackTrace();
}
}
return document;
}
//根据id删除该id的所有在数据库中的信息
public static void deleteTeamById(int id) throws Exception{
Connection cn=null;
PreparedStatement pst=null;
try{
cn=DataSource.getConnection();
pst=cn.prepareStatement("delete from team where id=?");
pst.setInt(1, id);
pst.execute();
}catch(Exception e){
e.printStackTrace();
}finally{
//关闭所有应该关闭的连接
try {
pst.close();
cn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//用于修改信息,从数据库中取出某个id的Team
public Team getTeamById(int id)throws Exception{
Team team=new Team();
Connection cn=null;
PreparedStatement pst=null;
ResultSet rs=null;
try {
cn=DataSource.getConnection();
String sql="select id,name,slogan,leader from team where id=?";
pst=cn.prepareStatement(sql);
pst.setInt(1, id);
rs=pst.executeQuery();
if(rs.next()){
team.setId(rs.getInt("id"));
team.setName(rs.getString("name"));
team.setSlogan(rs.getString("slogan"));
team.setLeader(rs.getString("leader"));
}
} catch (Exception e) {
throw new Exception("数据库中不存在此数据");
} finally{
try{
rs.close();
pst.close();
cn.close();
}catch(Exception e){
e.printStackTrace();
}
}
return team;
}
}


JavaBean类bean.Team
//略

连接数据库类database.DataSource.java
package database;

import java.sql.*;

public class DataSource {
public static Connection getConnection() throws Exception{
Connection cn=null;
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/training";
String user="root";
String password="jakeyouxiang";
cn=DriverManager.getConnection(url,user,password);
return cn;
}
}


xsl:teaminfo.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">
<xsl:apply-templates select="teaminfo/teams"/>
<xsl:apply-templates select="teaminfo/error"/>
</xsl:template>

<xsl:template match="teams">
<xsl:apply-templates select="currentPage"/>
<table border="1" cellspacing="1">
<tr>
<th>ID</th><th>组名</th><th>口号</th><th>领导人</th><th>修改</th><th>删除</th>
</tr>
<tr><xsl:apply-templates select="team"/></tr>
</table>
<p>
<xsl:apply-templates select="lastPage"/>
<xsl:apply-templates select="nextPage"/>
</p>
</xsl:template>

<xsl:template match="currentPage">
<p>
当前第<xsl:value-of select="page"/>页,每页<xsl:value-of select="n"/>行
</p>
</xsl:template>

<xsl:template match="team">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="slogan"/></td>
<td><xsl:value-of select="leader"/></td>
<td><a><xsl:attribute name="href">servlet/UpdateTeam?id=<xsl:value-of select="id"/></xsl:attribute>修改</a></td>
<td><a><xsl:attribute name="href">javascript:startRequest('servlet/DeleteTeam?id=<xsl:value-of select="id"/>&amp;page=<xsl:value-of select="cp"/>&amp;n=<xsl:value-of select="cn"/>')</xsl:attribute>删除</a></td>
</tr>
</xsl:template>

<xsl:template match="lastPage">
<a><xsl:attribute name="href">javascript:startRequest('servlet/ViewTeamsPageXml?page=<xsl:value-of select="page"/>&amp;n=<xsl:value-of select="n"/>')</xsl:attribute>上一页</a>
</xsl:template>

<xsl:template match="nextPage">
<a><xsl:attribute name="href">javascript:startRequest('servlet/ViewTeamsPageXml?page=<xsl:value-of select="page"/>&amp;n=<xsl:value-of select="n"/>')</xsl:attribute>下一页</a>
</xsl:template>

<xsl:template match="error">
<h1><xsl:value-of /></h1>
</xsl:template>

</xsl:stylesheet>

servlet类:ViewTeamsPageXml

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.dom4j.Document;

import business.TeamBusiness;

public class ViewTeamsPageXml extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
response.setContentType("text/xml;charset=UTF-8");
PrintWriter pw=response.getWriter();
int page=1;
int n=3;//n表示每页显示的信息的条数
String sPage=request.getParameter("page");
String sN=request.getParameter("n");
if(sPage!=null){
page=Integer.parseInt(sPage);
}
if(sN!=null){
n=Integer.parseInt(sN);
}
TeamBusiness tb=new TeamBusiness();
Document document=tb.teamsPageXml(page, n);
//pw.println("<?xml-stylesheet href=\"text/xsl\" href=\"xsl/teaminfo.xsl\"?>");
pw.println(document.asXML());
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
this.doGet(request, response);
}
}


UpdateTeam.java

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import business.*;
import bean.Team;

public class UpdateTeam extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
request.setCharacterEncoding("UTF-8");
int id=Integer.parseInt(request.getParameter("id"));
TeamBusiness tb=new TeamBusiness();
try{
//接受处理后的数据
Team team=tb.getTeamById(id);
request.setAttribute("team", team);
RequestDispatcher rd=request.getRequestDispatcher("../Update.jsp");
rd.forward(request, response);
}catch(Exception e){
e.printStackTrace();
//此处为转到失败页面,由于时间关系,暂时没有设计失败页面Fail.jsp
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
this.doGet(request, response);
}

}


DeleteTeam.java
package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import business.TeamBusiness;
import org.dom4j.*;

public class DeleteTeam extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
int id=Integer.parseInt(request.getParameter("id"));
int page=Integer.parseInt(request.getParameter("page"));
int n=Integer.parseInt(request.getParameter("n"));
TeamBusiness tb=new TeamBusiness();
try{
tb.deleteTeamById(id);
//以上的动作表示删除成功,以下可以做一些删除后的动作
//以下用于返回一个document对象
Document document=tb.teamsPageXml(page, n);
PrintWriter pw=response.getWriter();
pw.println(document.asXML());
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
this.doGet(request, response);
}

}


Update.jsp

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@page import="bean.Team;"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="CSS/c.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>修改用户信息</title>
</head>
<body bgcolor="#CCFFFF">
<div id="top">
<h2>修改用户信息</h2>
</div>
<%
Team team=(Team)request.getAttribute("team");
 %>
<div id="left">
<form id="subInfo" action="servlet/UpdateTeam" method="post">
<p><input type="hidden" name="id" value=<%=team.getId()%>></p>
<p>I&nbsp;&nbsp;D:&nbsp;&nbsp;<%=team.getId()%></p>
<p>姓名:<input type="text" name="name" value=<%=team.getName()%>></p>
<p>口号:<input type="text" name="slogan" value=<%=team.getSlogan()%>></p>
<p>领导人:<input type="text" name="leader" value=<%=team.getLeader()%>></p>
<p><input type="submit" value="提交"/><input type="reset" value="恢复默认值"></p>
<p><a href="../index.html">返回首页</a></p>

</form>
</div>
</body>
</html>

c.css

#top{
font-style:normal;
font-size:24px;
font-weight:bold;
text-align:left;
color:green;
}
#main{
font-style:normal;
font-weight:normal;
text-align:left;
color:black;
}
#left{
font-size:24;
font-style:normal;
font-weight:normal;
margin-left:500px;
color:black;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值