struts2框架:分页查询,easyui实现管理模块,查询数据库条数,视频笔记【诗书画唱】
CTRL+F:关于查询到数据库条数的方法。视频和视频笔记。
附加的话:这期的学习内容比较简单,所以一些视频笔记这类的没记录太多。关于查询到数据库条数的方法。
代码例子 START

package com.SSHC.action;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.SSHC.bean.Game;
import com.SSHC.dao.GameDao;
public class GameAction {
private Map<String,Object>map = new HashMap<String,Object>();
private GameDao gameDao = new GameDao();
private Game g;
//添加分页属性
private Integer rows;//每页记录条数
private Integer page;//页码数
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public GameDao getGameDao() {
return gameDao;
}
public void setGameDao(GameDao gameDao) {
this.gameDao = gameDao;
}
public Integer getRows() {
return rows;
}
public void setRows(Integer rows) {
this.rows = rows;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Game getG() {
return g;
}
public void setG(Game g) {
this.g = g;
}
public String loadAll(){
System.out.println("每页显示" + rows + "条数据");
System.out.println("当前显示第" + page + "页的数据");
g = new Game();
g.setPage(page);
g.setRows(rows);
List<Game>list = gameDao.selectByPage(g);
Integer total = gameDao.total();
map.put("rows", list);
map.put("total", total);
return "success";
}
}


package com.SSHC.bean;
public class Game {
private Integer id;
private String gname;
private String gtype;
private String gcomp;
private String gyear;
//分页属性
private Integer page;
private Integer rows;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public String getGtype() {
return gtype;
}
public void setGtype(String gtype) {
this.gtype = gtype;
}
public String getgcomp() {
return gcomp;
}
public void setgcomp(String gcomp) {
this.gcomp = gcomp;
}
public String getGyear() {
return gyear;
}
public void setGyear(String gyear) {
this.gyear = gyear;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getRows() {
return rows;
}
public void setRows(Integer rows) {
this.rows = rows;
}
}


package com.SSHC.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.SSHC.bean.Game;
import com.SSHC.util.DbUtil;
public class GameDao {
public List<Game>selectByPage(Game game){
String sql = "select * from game limit ?,?";
List<Game>list = new ArrayList<Game>();
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
conn = DbUtil.getConn();
pstm = conn.prepareStatement(sql);
Integer page = game.getPage();
Integer rows = game.getRows();
//隐藏的记录条数
Integer hideCount = (page - 1) * rows;
pstm.setInt(1, hideCount);
pstm.setInt(2, rows);
rs = pstm .executeQuery();
while(rs.next()){
Game g = new Game();
g.setId(rs.getInt("id"));
g.setGname(rs.getString("gname"));
g.setGtype(rs.getString("gtype"));
g.setgcomp(rs.getString("gcomp"));
g.setGyear(rs.getString("gyear"));
list.add(g);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.close(rs, pstm, conn);
}
return list;
}
public Integer total(){
String sql = "select count(*) ct from game";
Integer count = 0;
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
conn = DbUtil.getConn();
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
if(rs.next()) {
count = rs.getInt("ct");
System.out.println("count:"+count);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.close(rs, pstm, conn);
}
return count;
}
}


package com.SSHC.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class DbUtil {
private static String driverName;
private static String url;
private static String user;
private static String pwd;
static {
//读取properties文件
Properties prop = new Properties();
//将db.properties文件读取到内存中去
InputStream is = DbUtil.class.getClassLoader()
.getResourceAsStream("db.properties");
//加载内容
try {
prop.load(is);
//读取内容
driverName = prop.getProperty("drivername");
url = prop.getProperty("url");
user = prop.getProperty("username");
pwd = prop.getProperty("password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取数据库连接对象的方法
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url,user,pwd);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet rs,PreparedStatement pstm
,Connection conn){
try {
if(rs != null) {
rs.close();
}
if(pstm != null) {
pstm.close();
}
if(conn != null) {
conn.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}


drivername=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=GBK2312
username=root
password=root

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="my" namespace="/gm" extends="json-default">
<action name="ldAc" class="com.SSHC.action.GameAction"
method="loadData">
<result type="stream">
<param name="contentType">text/plain</param>
<!-- action返回的字符串的内容取自GameAction的哪个属性 -->
<param name="inputName">ins</param>
</result>
</action>
<action name="ldAllAc" class="com.SSHC.action.GameAction"
method="loadAll">
<result type="json">
<param name="root">map</param>
<param name="contentType">text/html</param>
</result>
</action>
</package>
</struts>


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>EasyuiJavaWebHomeWork1</display-name>
<!-- struts2框架的配置 -->
<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>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
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 hreff="<%=basePath%>">
<title></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">
</head>
<body>
<h1 align="center">新增游戏</h1>
<form action="" method="post">
<table align="center">
<tr>
<td>游戏名称:</td>
<td>
<input name="gname" class="easyui-validatebox"
data-options="required:true"
validType="length[6,30]"
invalidMessage="游戏名称的长度必须在6到30位之间"
style="width:180px;" />
</td>
</tr>
<tr>
<td>游戏类型:</td>
<td>
<input name="gtype" class="easyui-combobox"
style="width:180px;"
data-options="valueField:'id',textField:'gtype',
panelHeight:'auto',editable:false,data:[{
id:'1',
gtype:'塔防'
},{
id:'2',
gtype:'战略'
},{
id:'3',
gtype:'MOB'
},{
id:'4',
gtype:'RPG'
},{
id:'5',
gtype:'休闲'
}]" />
</td>
</tr>
<tr>
<td>游戏公司:</td>
<td>
<input name="gcomp" class="easyui-validatebox"
validType="length[4,30]"
invalidMessage="游戏公司的长度必须在4到30位之间"
style="width:180px;" />
</td>
</tr>
<tr>
<td>游戏年份:</td>
<td>
<input name="gyear" class="easyui-numberbox"
data-options="min:1000,max:9999"
style="width:180px;" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<a hreff="javascript:void(0);" class="easyui-linkbutton"
data-options="iconCls:'icon-save'">保存</a>
<a hreff="javascript:clsWin();" onclick="clsWin();" class="easyui-linkbutton"
data-options="iconCls:'icon-cut'">取消</a>
</td>
</tr>
</table>
</form>
</body>
</html>

————

{"total":2,"rows":[{"id":1,"gname":"WANGZHERONGYI","gtype":"MOB","gcomp":"TENCENT","gyear":2010}]}

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
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 hreff="<%=basePath%>">
<title></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">
</head>
<body>
<h1>修改</h1>
</body>
</html>


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
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 hreff="<%=basePath%>">
<title></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" hreff="css/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" hreff="css/themes/icon.css">
<script type="text/javascript" srcc="js/jquery.min.js"></script>
<script type="text/javascript" srcc="js/jquery.easyui.min.js"></script>
<!-- 语言汉化包 -->
<script type="text/javascript" srcc="js/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">
function toAdd(){
var url = 'add.jsp';
$('#win').window({
width : 700,//宽度
height : 550,//高度
title : '新增',
href : url
});
$('#win').window('open');//打开窗体
}
function toEdit(){
//获取选中的行
var row = $('#dg').datagrid('getSelected');
//判断是否选中
if(! row) {
$.messager.alert("提示", "请选要修改的数据", "info");
} else {
var url = 'edit.jsp';
$('#win').window({
width : 700,//宽度
height : 550,//高度
title : '修改',
href : url
});
$('#win').window('open');//打开窗体
}
}
function doDelete(){
//获取选中的行
var row = $('#dg').datagrid('getSelected');
//判断是否选中
if(! row) {
$.messager.alert("提示", "请选要删除的数据", "info");
} else {
//实现删除功能
}
}
function clsWin(){
$('#win').window('close');
}
</script>
</head>
<body>
<table id="dg" class="easyui-datagrid" title="游戏管理模块"
style="width:1000px;height:450px"
data-options="singleSelect:true,collapsible:true,
url:'gm/ldAllAc.action',method:'get',pagination:true,
pageList:[3,5,7,10,15],pageSize:5,toolbar:'#tb'">
<thead>
<tr>
<th data-options="field:'id',width:80">游戏ID</th>
<th data-options="field:'gname',width:100">游戏名称</th>
<th data-options="field:'gtype',width:80,align:'right'">游戏类型</th>
<th data-options="field:'gcomp',width:80,align:'right'">游戏公司</th>
<th data-options="field:'gyear',width:250">游戏年份</th>
</tr>
</thead>
</table>
<!-- 工具栏 -->
<div id="tb" style="padding:5px;height:auto">
<div style="margin-bottom:5px">
<a hreff="javascript:toAdd();" onclick="toAdd();" class="easyui-linkbutton"
iconCls="icon-add" plain="true" title="新增"></a>
<a hreff="javascript:toEdit();" onclick="toEdit();" class="easyui-linkbutton"
iconCls="icon-edit" plain="true" title="修改"></a>
<a hreff="javascript:doDelete();" onclick="doDelete();" class="easyui-linkbutton"
iconCls="icon-remove" plain="true" title="删除"></a>
</div>
</div>
<!-- 弹出窗体 -->
<div id="win" class="easyui-window"
data-options="modal:true,closed:true,iconCls:'icon-save', top: 20,
minimizable: false,maximizable: false,collapsible: false,left: 100">
</div>
</body>
</html>

运行后:










代码例子 END
视频和视频笔记 START
以下效果在eclipse中容易卡,进而看起来像是没效果,但在QQ浏览器中比较有效果:


关于查询到数据库条数的方法 START




关于查询到数据库条数的方法 END





