欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中jqGrid 學(xué)習(xí)筆記整理——進(jìn)階篇(二)

 更新時(shí)間:2016年04月17日 10:08:10   作者:XeonMic  
這篇文章主要介紹了Java中jqGrid 學(xué)習(xí)筆記整理——進(jìn)階篇(二)的相關(guān)資料,需要的朋友可以參考下

相關(guān)閱讀:

Java中jqGrid 學(xué)習(xí)筆記整理——進(jìn)階篇(一)

本篇開(kāi)始正式與后臺(tái)(java語(yǔ)言)進(jìn)行數(shù)據(jù)交互,使用的平臺(tái)為

JDK:java 1.8.0_71

myEclisp 2015 Stable 2.0

Apache Tomcat-8.0.30

Mysql 5.7

Navicat for mysql 11.2.5(mysql數(shù)據(jù)庫(kù)管理工具)

一、數(shù)據(jù)庫(kù)部分

1、創(chuàng)建數(shù)據(jù)庫(kù)

使用Navicat for mysql創(chuàng)建數(shù)據(jù)庫(kù)(使用其他工具或直接使用命令行暫不介紹)

newdatabase2、

2.創(chuàng)建表

雙擊打開(kāi)上步創(chuàng)建數(shù)據(jù)庫(kù)——右擊Tables——選擇New Table

建立如下字段 保存時(shí)會(huì)提示輸入表名

newtable

二、程序部分

1、新建項(xiàng)目

使用myEclipse新建——Web Project

輸入項(xiàng)目名稱(chēng) 選擇java和運(yùn)行該項(xiàng)目的Tomcat 一直點(diǎn)下一步 直到下圖頁(yè)面 點(diǎn)選下面自動(dòng)生成web.xml文件的復(fù)選框 后完成

newproject
xml

創(chuàng)建如下包結(jié)構(gòu)并新建一個(gè)vo類(lèi)(屬性與數(shù)據(jù)庫(kù)字段一一對(duì)應(yīng))

package

demo.java

package com.xeonmic.vo;
public class demo {
private int id;
private String name;
private int type;
private double pay;
private String text;
public demo() {
// TODO Auto-generated constructor stub
}
public demo(int id, int type, Double pay,String name, String text) {
this.id = id;
this.name = name;
this.type = type;
this.pay = pay;
this.text = text;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public double getPay() {
return pay;
}
public void setPay(Double pay) {
this.pay = pay;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Override
public String toString() {
return "demo [id=" + id + ", name=" + name + ", type=" + type
+ ", pay=" + pay + ", text=" + text + "]";
}
}

2、導(dǎo)入數(shù)據(jù)庫(kù)連接和JSON文件的jar包

數(shù)據(jù)庫(kù)連接jar包可以在mysql安裝目錄的如下目錄查找到

mysqljar

另外下載JSON所需jar包,已上傳百度云(http://pan.baidu.com/s/1dETGjRV)一起復(fù)制粘貼到WebRoot/WEB-INF/lib目錄下

然后全選右鍵添加到構(gòu)建路徑

add path

3、DAO設(shè)計(jì)模式的基本分層實(shí)現(xiàn)

參考《Java Web開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)典基礎(chǔ)篇》這里不在敘述直接貼源碼后續(xù)單獨(dú)開(kāi)一篇專(zhuān)門(mén)講這部分基礎(chǔ)知識(shí)

—3.1、DatabaseConnection.java

package com.xeonmic.dbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String DBDRIVER="org.gjt.mm.mysql.Driver";
private static final String DBURL="jdbc:mysql://localhost:3306/jqgriddemo";
private static final String DBUSER="root";
private static final String DBPASSWORD="1234";
private Connection conn =null;
public DatabaseConnection(){
try {
Class.forName(DBDRIVER);
this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
} catch (ClassNotFoundException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
} catch (SQLException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
}
//System.out.println("連接數(shù)據(jù)庫(kù)成功");
}
public Connection getConnection(){
return this.conn;
}
public void close(){
if(this.conn != null){
try {
this.conn.close();
} catch (SQLException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
}
}
}
}

—3.2、DemoDAO.java

package com.xeonmic.dao;
import java.util.List;
import com.xeonmic.vo.demo;
public interface DemoDAO {
//添加方法
public boolean doCreate(demo demo);
//查詢方法
public List<demo> doSearch(String keys);
//刪除方法
public boolean doDelete(int id);
//修改方法
public boolean doChange(demo demo);
}

—3.3、DemoDAOImpl.java

package com.xeonmic.dao.impl;
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.xeonmic.dao.DemoDAO;
import com.xeonmic.vo.demo;
public class DemoDAOImpl implements DemoDAO {
private Connection conn = null;
private PreparedStatement pstmt = null;
public DemoDAOImpl(Connection conn){
this.conn=conn;
}
@Override
public boolean doCreate(demo demo) {
boolean flag = false;
String sql = "INSERT INTO t_demo(type,pay,name,text ) VALUES(?,?,?,?)";
try {
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, demo.getType());
this.pstmt.setDouble(2, demo.getPay());
this.pstmt.setString(3, demo.getName());
this.pstmt.setString(4, demo.getText());
if(this.pstmt.executeUpdate()>0){
flag = true;
}
this.pstmt.close();
} catch (SQLException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
}
return flag;
}
@Override
public List<demo> doSearch(String keys) {
// TODO Auto-generated method stub
if (keys==null) {
keys="";
}
String sql = "SELECT id,name,type,pay,text FROM t_demo "+keys;
List<demo> all = new ArrayList<demo>();
System.out.println(sql);
try { 
this.pstmt = this.conn.prepareStatement(sql); 
ResultSet rs = this.pstmt.executeQuery();
demo demo = null;
while(rs.next()){
demo = new demo(rs.getInt("id"),rs.getInt("type"),rs.getDouble("pay"),rs.getString("name"),rs.getString("text")); 
all.add(demo);
}
this.pstmt.close(); 
} catch (SQLException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
}
return all;
}
@Override
public boolean doDelete(int id) {
boolean flag = false;
String sql = "DELETE FROM t_demo WHERE id = ?";
try {
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, id);
if(this.pstmt.executeUpdate()>0){
flag = true;
}
this.pstmt.close();
} catch (SQLException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
}
return flag;
}
@Override
public boolean doChange(demo demo) {
boolean flag = false;
String sql = "UPDATE t_demo SET type=?,pay=?,name=?,text=? WHERE id=?";
try {
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(5, demo.getId());
this.pstmt.setInt(1, demo.getType());
this.pstmt.setDouble(2, demo.getPay());
this.pstmt.setString(3, demo.getName());
this.pstmt.setString(4, demo.getText());
if(this.pstmt.executeUpdate()>0){
flag = true;
}
this.pstmt.close();
} catch (SQLException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
}
return flag;
}
}

—3.5、Factory.java

package com.xeonmic.factory;
import com.xeonmic.dao.DemoDAO;
import com.xeonmic.dao.proxy.DemoDAOProxy;
public class Factory {
public static DemoDAO getDemoDAOInstance(){
return new DemoDAOProxy();
}
}

—3.6、Demotest.java(對(duì)前面的方法進(jìn)行一次簡(jiǎn)單測(cè)試)

package com.xeonmic.test;
import java.util.LinkedList;
import java.util.List;
import com.xeonmic.factory.Factory;
import com.xeonmic.vo.demo;
public class Demotest {
public static void main(String[] args) {
demo demo1 = new demo();
demo1.setName("Name");
demo1.setPay(0.98);
demo1.setType(1);
demo1.setText("Text");
doCreate(demo1);
doSearch(null);
if (doSearch(null)!=null&&!doSearch(null).isEmpty()) {
demo1 = doSearch("").get(0);
demo1.setText("Change Text");
doChange(demo1);
doSearch("WHERE id = "+demo1.getId());
doDelete(demo1.getId());
doSearch(null);
}
}
public static List<demo> doSearch(String keys) {
List<demo> allDemos = new LinkedList<demo>();
allDemos = Factory.getDemoDAOInstance().doSearch(keys);
for (demo demo : allDemos) {
System.out.println(demo.toString());
}
return allDemos;
}
public static void doCreate(demo demo) {
if (Factory.getDemoDAOInstance().doCreate(demo)) {
System.out.println("添加成功");
}else {
System.out.println("添加失敗");
}
}
public static void doChange(demo demo) {
if (Factory.getDemoDAOInstance().doChange(demo)) {
System.out.println("修改成功");
}else {
System.out.println("修改失敗");
}
}
public static void doDelete(int id) {
if (Factory.getDemoDAOInstance().doDelete(id)) {
System.out.println("刪除成功");
}else {
System.out.println("刪除失敗");
}
}
}
/*
* 輸出結(jié)果
添加成功
SELECT id,name,type,pay,text FROM t_demo 
demo [id=1, name=Name, type=1, pay=0.98, text=Text]
SELECT id,name,type,pay,text FROM t_demo 
demo [id=1, name=Name, type=1, pay=0.98, text=Text]
SELECT id,name,type,pay,text FROM t_demo 
demo [id=1, name=Name, type=1, pay=0.98, text=Text]
SELECT id,name,type,pay,text FROM t_demo 
demo [id=1, name=Name, type=1, pay=0.98, text=Text]
修改成功
SELECT id,name,type,pay,text FROM t_demo WHERE id = 1
demo [id=1, name=Name, type=1, pay=0.98, text=Change Text]
刪除成功
SELECT id,name,type,pay,text FROM t_demo 
* */

4、JSP頁(yè)面和Servlet部分(重要)

—4.1、index.jsp(將index.html中html標(biāo)簽到html標(biāo)簽中的內(nèi)容替換index.jsp中html的內(nèi)容并對(duì)JS進(jìn)行如下修改)

<%@ page language="java" import="java.util.*" 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>
<title>DEMO</title>
<link rel="stylesheet" type="text/css" href="css/jquery-ui.min.css" />
<link rel="stylesheet" type="text/css" href="css/jquery-ui.theme.min.css" />
<link rel="stylesheet" type="text/css" href="css/ui.jqgrid-bootstrap-ui.css" />
<link rel="stylesheet" type="text/css" href="css/ui.jqgrid.css" />
</head>
<body>
<div class="main" id="main">
<!--jqGrid所在-->
<table id="grid-table"></table>
<!--jqGrid 瀏覽導(dǎo)航欄所在-->
<div id="grid-pager"></div>
</div>
<script src="js/jquery-1.11.0.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/i18n/grid.locale-cn.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//當(dāng) datatype 為"local" 時(shí)需填寫(xiě) 
var grid_selector = "#grid-table";
var pager_selector = "#grid-pager";
$(document).ready(function() {
$("#grid-table").jqGrid({
//用于檢索的Servlet URL
url:"<%=basePath%>"+"demoServlet", 
//用于添加、修改、刪除的Servlet URL
editurl: "<%=basePath%>"+"demochangeServlet",
//data: grid_data, //當(dāng) datatype 為"local" 時(shí)需填寫(xiě) 
datatype:"json", //數(shù)據(jù)來(lái)源,本地?cái)?shù)據(jù)(local,json,jsonp,xml等)
height: 150, //高度,表格高度。可為數(shù)值、百分比或'auto'
mtype:"GET",//提交方式
colNames: ['出庫(kù)單號(hào)', '出庫(kù)類(lèi)型', '總金額', '申請(qǐng)人(單位)', '備注'],
colModel: [{
name: 'id',
index: 'id', //索引。其和后臺(tái)交互的參數(shù)為sidx
key: true, //當(dāng)從服務(wù)器端返回的數(shù)據(jù)中沒(méi)有id時(shí),將此作為唯一rowid使用只有一個(gè)列可以做這項(xiàng)設(shè)置。如果設(shè)置多于一個(gè),那么只選取第一個(gè),其他被忽略
width: 100,
editable: false,
editoptions: {
size: "20",
maxlength: "30"
}
}, {
name: 'type',
index: 'type',
width: 200, //寬度
editable: true, //是否可編輯
edittype: "select", //可以編輯的類(lèi)型??蛇x值:text, textarea, select, checkbox, password, button, image and file.s
editoptions: {
value: "1:采購(gòu)入庫(kù);2:退用入庫(kù)"
}
}, {
name: 'pay',
index: 'pay',
width: 60,
sorttype: "double",
editable: true
}, {
name: 'name',
index: 'name',
width: 150,
editable: true,
editoptions: {
size: "20",
maxlength: "30"
}
}, {
name: 'text',
index: 'text',
width: 250,
sortable: false,
editable: true,
edittype: "textarea",
editoptions: {
rows: "2",
cols: "10"
}
}, ],
viewrecords: true, //是否在瀏覽導(dǎo)航欄顯示記錄總數(shù)
rowNum: 10, //每頁(yè)顯示記錄數(shù)
rowList: [10, 20, 30], //用于改變顯示行數(shù)的下拉列表框的元素?cái)?shù)組。
pager: pager_selector, //分頁(yè)、按鈕所在的瀏覽導(dǎo)航欄
altRows: true, //設(shè)置為交替行表格,默認(rèn)為false
//toppager: true,//是否在上面顯示瀏覽導(dǎo)航欄
multiselect: true, //是否多選
//multikey: "ctrlKey",//是否只能用Ctrl按鍵多選
multiboxonly: true, //是否只能點(diǎn)擊復(fù)選框多選
// subGrid : true, 
//sortname:'id',//默認(rèn)的排序列名
//sortorder:'asc',//默認(rèn)的排序方式(asc升序,desc降序)
caption: "采購(gòu)?fù)素泦瘟斜?, //表名
autowidth: true //自動(dòng)寬
});
//瀏覽導(dǎo)航欄添加功能部分代碼
$(grid_selector).navGrid(pager_selector, {
search: true, // 檢索
add: true, //添加 (只有editable為true時(shí)才能顯示屬性)
edit: true, //修改(只有editable為true時(shí)才能顯示屬性)
del: true, //刪除
refresh: true //刷新
}, {}, // edit options
{}, // add options
{}, // delete options
{
multipleSearch: true
} // search options - define multiple search
);
});
</script>
</body>
</html>

—4.2、demoServlet.java

package com.xeonmic.action;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import com.xeonmic.factory.Factory;
import com.xeonmic.vo.demo;
/**
* Servlet implementation class demoServlet
*/
public class demoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); //這里不設(shè)置編碼會(huì)有亂碼
response.setContentType("text/html;charset=utf-8");
response.setHeader("Cache-Control", "no-cache"); 
int rows = Integer.valueOf(request.getParameter("rows")); //每頁(yè)中顯示的記錄行數(shù)
int page = Integer.valueOf(request.getParameter("page")); //當(dāng)前的頁(yè)碼
String sord = request.getParameter("sord");//排序方式
String sidx = request.getParameter("sidx");//排序列名
Boolean search =(request.getParameter("_search").equals("true"))?true:false;//是否用于查詢請(qǐng)求
List<demo> allList = new LinkedList<demo>();//返回結(jié)果集
String keys="";//查詢條件字符串
if(search){
keys=" WHERE ";
String filters = request.getParameter("filters");//具體的條件
System.out.println(filters);
//傳入數(shù)據(jù)的格式是類(lèi)似這樣的:"{"groupOp":"AND","rules":[{"field":"id","op":"eq","data":"1"},{"field":"type","op":"ew","data":"2"}]}"
JSONObject jsonObject = JSONObject.fromObject(filters);
String groupOp = "AND";//每個(gè)規(guī)則之間的關(guān)系(and/or)
if (jsonObject.getString("groupOp")!=null&&!"".equals(jsonObject.getString("groupOp"))) {
if (jsonObject.getString("groupOp").equals("OR")) {
groupOp = "OR";
}
}
JSONArray rulesjson = jsonObject.getJSONArray("rules");
//遍歷每個(gè)條件
for (int z=0; z < rulesjson.size(); z++) {
Object t = rulesjson.get(z);
JSONObject rulejson = JSONObject.fromObject(t);
String field = rulejson.getString("field");
String op = rulejson.getString("op");
String data = rulejson.getString("data");
String string = "";//用于存儲(chǔ)單個(gè)條件sql語(yǔ)句片段
//開(kāi)始轉(zhuǎn)化為sql語(yǔ)句
switch (op) {
case "eq"://相等
string=" = '"+data+"' ";
break;
case "ne"://不相等
string=" <> '"+data+"' ";
break;
case "li"://小于
string=" < '"+data+"' ";
break;
case"le"://小于等于
string=" <= '"+data+"' ";
break;
case"gt"://大于
string=" > '"+data+"' ";
break;
case "ge"://大于等于
string=" >= '"+data+"' ";
break;
case "bw"://在...之間
{
if (data.split(",").length==2) {
string=" BETWEEN '"+data.split(",")[0]+"' AND '"+data.split(",")[1]+"' ";
}else {
string=" = '"+data+"' ";//數(shù)據(jù)錯(cuò)誤時(shí)處理
}
} 
break;
case"bn"://不在...之間
{
if (data.split(",").length==2) {
string=" NOT BETWEEN '"+data.split(",")[0]+"' AND '"+data.split(",")[1]+"' ";
}else {
string=" <> '"+data+"' ";//數(shù)據(jù)錯(cuò)誤時(shí)處理
}
}
break;
case"ew"://以...結(jié)束
string=" LIKE '%"+data+"' ";
break;
case "en"://不以...結(jié)束
string=" NOT LIKE '%"+data+"' ";
break;
case "cn"://包含
string=" LIKE '%"+data+"%' ";
break;
case "nc"://不包含
string=" NOT LIKE '%"+data+"%' ";
break;
case "in"://在
{
string=" IN ( ";
String[] datas = data.split(",");
for (int i = 0; i < datas.length; i++) {
string+= " '"+datas[i]+"' ";
if (i!=datas.length-1) {
string += ",";
}else {
string += " ) ";
}
}
}
break;
case "ni"://不在
{
string=" NOT IN ( ";
String[] datas = data.split(",");
for (int i = 0; i < datas.length; i++) {
string+= " '"+datas[i]+"' ";
if (i!=datas.length-1) {
string += ",";
}else {
string += " ) ";
}
}
}
break;
default:
op=null;
System.out.println("OP符號(hào)錯(cuò)誤");//OP符號(hào)錯(cuò)誤
}
if (op!=null) {
if (z==rulesjson.size()-1) {
keys+=" "+field+" "+string +" ";
}else {
keys+=" "+field+" "+string +" "+groupOp+" ";
}
}
}
}
//升降序SQL語(yǔ)句轉(zhuǎn)換
if (sidx!=null&&!"".equals(sidx)) {
System.out.println(sidx);
keys += " ORDER BY " + sidx;
System.out.println("sord="+sord);
if (!sord.equals("asc")) {
keys += " DESC ";
}
}
allList = Factory.getDemoDAOInstance().doSearch(keys);
//分頁(yè)部分
int total=0; 
total=(allList.size()%rows==0)?(allList.size()/rows):((allList.size()/rows)+1);
int j = 0;
int m = (page-1)*rows;
int n = (page-1)*rows+rows;
JSONArray jArray = new JSONArray();
for (j=m; j<allList.size()&&j<n; j++) { 
jArray.add(JSONObject.fromObject(allList.get(j))); 
}
JSONObject jjson = new JSONObject(); 
//檢索結(jié)果及分頁(yè)信息封裝 返回
jjson.accumulate("page", page);
jjson.accumulate("total", total);
jjson.accumulate("records", allList.size());
jjson.accumulate("rows", jArray);
System.out.println(jjson.toString());
response.getWriter().write(jjson.toString());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(request, response);
}
}

—4.3、demochangeServlet.java

package com.xeonmic.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xeonmic.factory.Factory;
import com.xeonmic.vo.demo;
public class demochangeServlet extends HttpServlet {
/**
* 
*/
private static final long serialVersionUID = 1L;
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
* 
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean flag = false;
String oper =request.getParameter("oper");
switch (oper) {
case "del":
{
String[] ids = request.getParameter("id").split(",");
for (int i = 0; i < ids.length; i++) {
int id =Integer.valueOf(ids[i]);
flag=Factory.getDemoDAOInstance().doDelete(id);
}
} 
break;
case "add":
{
int type = Integer.valueOf(request.getParameter("type"));
Double pay = Double.valueOf(request.getParameter("pay"));
String name = request.getParameter("name");
String text = request.getParameter("text");
demo demo = new demo(-1,type,pay,name,text);
flag = Factory.getDemoDAOInstance().doCreate(demo); 
}
break;
case "edit":
{
int id = Integer.valueOf(request.getParameter("id"));
int type = Integer.valueOf(request.getParameter("type"));
Double pay = Double.valueOf(request.getParameter("pay"));
String name = request.getParameter("name");
String text = request.getParameter("text");
demo demo = new demo(id,type,pay,name,text);
flag = Factory.getDemoDAOInstance().doChange(demo); 
}
break;
default:
break;
}
System.out.println(flag);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
* 
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}

—4.4、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>jqGrid</display-name>
<servlet>
<servlet-name>demoServlet</servlet-name>
<servlet-class>com.xeonmic.action.demoServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>demochangeServlet</servlet-name>
<servlet-class>com.xeonmic.action.demochangeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demoServlet</servlet-name>
<url-pattern>/demoServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>demochangeServlet</servlet-name>
<url-pattern>/demochangeServlet</url-pattern>
</servlet-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>

至此,jqGrid單表功能已全部實(shí)現(xiàn),例子中有哪些設(shè)計(jì)有問(wèn)題請(qǐng)告知,下一篇將開(kāi)始解決 主從表 的設(shè)計(jì)實(shí)現(xiàn),敬請(qǐng)關(guān)注腳本直接網(wǎng)站!

相關(guān)文章

  • Redis有效時(shí)間設(shè)置以及時(shí)間過(guò)期處理操作

    Redis有效時(shí)間設(shè)置以及時(shí)間過(guò)期處理操作

    這篇文章主要介紹了Redis有效時(shí)間設(shè)置以及時(shí)間過(guò)期處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • spring aop兩種配置方式

    spring aop兩種配置方式

    這篇文章主要為大家詳細(xì)介紹了spring aop兩種配置方式,主要是注解配置AOP和xml配置aop,需要的朋友可以參考下
    2015-09-09
  • java中的類(lèi)URL與URLConnection使用介紹

    java中的類(lèi)URL與URLConnection使用介紹

    這篇文章主要為大家介紹了java中的類(lèi)URL與URLConnection使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Spring Cloud EureKa Ribbon 服務(wù)注冊(cè)發(fā)現(xiàn)與調(diào)用

    Spring Cloud EureKa Ribbon 服務(wù)注冊(cè)發(fā)現(xiàn)與調(diào)用

    這篇文章主要介紹了Spring Cloud EureKa Ribbon 服務(wù)注冊(cè)發(fā)現(xiàn)與調(diào)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • springboot實(shí)現(xiàn)jar運(yùn)行復(fù)制resources文件到指定的目錄(思路詳解)

    springboot實(shí)現(xiàn)jar運(yùn)行復(fù)制resources文件到指定的目錄(思路詳解)

    這篇文章主要介紹了springboot實(shí)現(xiàn)jar運(yùn)行復(fù)制resources文件到指定的目錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Java超詳細(xì)介紹抽象類(lèi)與接口的使用

    Java超詳細(xì)介紹抽象類(lèi)與接口的使用

    在類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類(lèi)稱(chēng)為抽象類(lèi),接口是Java中最重要的概念之一,它可以被理解為一種特殊的類(lèi),不同的是接口的成員沒(méi)有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類(lèi)和接口,感興趣的朋友一起看看吧
    2022-05-05
  • Spring?Boot實(shí)現(xiàn)熱部署的五種方式

    Spring?Boot實(shí)現(xiàn)熱部署的五種方式

    這篇文章主要介紹了Spring?Boot?五種熱部署方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Java并發(fā)統(tǒng)計(jì)變量值偏差原因及解決方案

    Java并發(fā)統(tǒng)計(jì)變量值偏差原因及解決方案

    這篇文章主要介紹了Java并發(fā)統(tǒng)計(jì)變量值偏差原因及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中Maven Shade插件的具體使用

    Java中Maven Shade插件的具體使用

    Maven Shade插件它可以幫助你在構(gòu)建項(xiàng)目時(shí)打包所有依賴項(xiàng),并將其打包到一個(gè)單獨(dú)的JAR文件中,本文就介紹一下Maven Shade插件的具體使用,具有一定參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 關(guān)于Jsoup將相對(duì)路徑轉(zhuǎn)為絕對(duì)路徑的方法

    關(guān)于Jsoup將相對(duì)路徑轉(zhuǎn)為絕對(duì)路徑的方法

    這篇文章主要介紹了關(guān)于Jsoup將相對(duì)路徑轉(zhuǎn)為絕對(duì)路徑的方法,jsoup 是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容,需要的朋友可以參考下
    2023-04-04

最新評(píng)論