관련 판독 값 :
JQGRID 연구 노트 구성 Java- 고급 챕터 (I)
이 기사는 공식적으로 배경 (Java Language)과 상호 작용하기 시작하며 사용 된 플랫폼은
JDK : Java 1.8.0_71
MyEclisp 2015 안정 2.0
Apache Tomcat-8.0.30
MySQL 5.7
MySQL 용 Navicat 11.2.5 (MySQL 데이터베이스 관리 도구)
1. 데이터베이스 부분
1. 데이터베이스를 만듭니다
MySQL 용 Navicat을 사용하여 데이터베이스 생성 (다른 도구를 사용하거나 명령 줄을 직접 사용하지 않음)
2.
2. 테이블을 만듭니다
두 번 클릭하여 이전 단계를 열려면 데이터베이스를 생성합니다 - 오른쪽 버튼 클릭 테이블 - 새 테이블을 선택하십시오.
다음 필드를 만들 때 테이블 이름을 입력하라는 메시지가 표시됩니다.
2. 절차 부품
1. 새 프로젝트를 만듭니다
MyEclipse -Web Project를 사용하여 새로운 생성
프로젝트 이름을 입력하여 프로젝트를 실행하는 Java 및 Tomcat을 선택하십시오. 다음 페이지가 될 때까지 다음을 클릭하십시오. 아래 확인란을 클릭하여 web.xml 파일을 자동으로 생성하십시오.
다음 패키지 구조를 만들고 새 VO 클래스를 만듭니다 (속성은 데이터베이스 필드에 하나씩 해당).
Demo.java
package com.xeonmic.vo; public class demo {private int id; private int id; private string name; private int type; private double pay; private string text; public demo () {// todo auto-auto-auto-auto-auto-auto-auto-auto-auto-auto-ledo (int type, int type, string 텍스트) {this.id = id; name = name; this.type =; text;} public int getId () {return id;} public void setId (int id) {the id) {this.id = id;} public string getName () {return name;} public void setName (문자열 이름) {this.name = name;} public inttype () {return type;} public void settype (int type) {this.type = type =} {return pay;} public void setpay (double pay) {this.pay = pay;} public string getText () {return text;} public void settext (string text) {this.text = text;}@overridepublic string tostring () {return "id =" + id + ", pay +" + 이름 + ", type =" + " + 이름 +" + text + "]";}}2. 데이터베이스 연결 및 JSON 파일의 JAR 패키지 가져 오기
데이터베이스 연결 JAR 패키지는 MySQL 설치 디렉토리의 다음 디렉토리에서 찾을 수 있습니다.
또한 JSON에 필요한 JAR 패키지는 Baidu Cloud (http://pan.baidu.com/s/1detgjrv)에 업로드되어 Webroot/Web-Inf/Lib 디렉토리에 복사하여 붙여 넣었습니다.
그런 다음 모든 마우스 오른쪽 버튼을 클릭하여 빌드 경로에 추가하십시오.
3. DAO 설계 모델의 기본 계층 구현
여기에서 "Java Web Development Classic 기본 사항"을 참조하십시오. 소스 코드를 설명하지 않은 다음 별도의 기사를 작성하여 기본 지식 의이 부분에 대해 구체적으로 이야기합니다.
- 3.1. DatabaseConnection.java
패키지 com.xeonmic.dbc; import java.sql.connection; import java.sql.drivermanager; import java.sql.sql.sql.sqleception; public class databaseconnection {private static final String dbdriver = "org.gjt.mm.mysql.driver"; dburl = "JDBC : mysql : // localhost : 3306/jqgriddemo"; private static final String dbuser = "root"; private static final string dbpassword = "1234"; private connection conn = null; public databaseconnection () {class.forname (dbdriver); dbuser, dbpassword);} catch (classnotfoundException e) {// todo 자동으로 생성 된 캐치 블록 E.printstacktrace ();} catch (sqlexception e) {// todo 자동 생성 된 캐치 블록 E.printstackTrace ();} // system.out.println ( "Connection getConnection ())} this.conn;} public void close () {if (this.conn! = null) {try {three.conn.close ();} catch (sqlexception e) {// todo 자동 생성 된 캐치 블록 e.printstacktrace ();}}}}- 3.2. Demodao.java
package com.xeonmic.dao; import java.util.list; import com.xeonmic.vo.demo; public interface demodao {// 메소드 추가 공개 부울 docreate (Demo Demo); // query method public list <emo> dosearch (string keys); // public boolean dodelete (int id); 데모);}- 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; com.xeonmic com.xeonmic.vo.demo; public class demodaoimpl은 demodao {private connection conn = null; private preparedstatement pstmt = null; public demodaoimpl (connection conn) {this.conn = conn;}@atederedpublic boolean docreate (demo demo) {boolean flag = fallinge; string sql = "Insert indest and t_demo (type, pay, name, text) value (?,?,?,?); demo.getname ()); this.pstmt.setString (4, demo.getText ()); if (this.pstmt.executeUpdate ()> 0) {flag = true;} this.pstmt.close ();} catch (sqlexception e) {// aut-geterated catchtrate (); FLAG;}@atedricepublic list <emo> doSearch (string keys) {// todo auto-recenated method stubif (keys == null) {keys = "";} string sql = "select id, name, type, pay, text t_demo"+keys; all = new arraylist <demo> (); 시스템. {this.pstmt = this.conn.preparestatement (sql); resultSet rs = this.pstmt.executeQuery (); demo demo = null; while (rs.next ()) {demo = new 데모 (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는 자동으로 생성 된 캐치 블록 e.printstacktrace ();} return all;}@atrivepublic boolean boolean dodelete (int id) {boolean flag = false; string sql = "id =?" this.conn.preparestatement (sql); this.pstmt.setint (1, id); if (this.pstmt.executeUpdate ()> 0) {flag = true;} this.pstmt.close ();} catch (sqlexception e) {// retaflic e.printstacktrace (); 부울 dochange (데모 데모) {boolean flag = false; string sql = "t_demo set type =?, pay =?, name =?, text =? where id =?"; try {this.pstmt = this.conn.preparestatement (sql); this.pstmt.setint (5, demo.getsid ()); demo.getType ()); this.pstmt.setDouble (2, demo.getPay ()); this.pstmt.setString (3, demo.getname ()); this.pstmt.setString (4, demo.getText ()); if (this.pstmt.executePdate ()> 0) {0) {0) true;} this.pstmt.close ();} catch (sqlexception e) {// todo 자동 생성 된 캐치 블록 e.printstacktrace ();} return flag;}}- 3.5. 공장. 자바
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 (이전 방법의 간단한 테스트 수행)
package com.xeonmic.test; import java.util.linkedlist; import java.util.list; import com.xeonmic.factory.factory; import com.xeonmic.vo.demo; public static void main (String [] args) {demo demo1 = new demo (); demo1.setname ( "name"); demo1.setpay (0.98); demo1.settype (1); demo1.settext ( "texp"); docreate (demo1); dosearch (null); if (dosearch (null)! = null && doSearch (null)) doSearch ( ""). get (0); demo1.settext ( "텍스트 변경"); doChange (deCange (demo1)); doSearch ( "where id ="+demo1.getId ()); dodElete (demo1.getId ()); doSearch (null);}} public static list <Demo> doSearch (string keys) {demo> alldemos = LinkedList <emo> (); AllDemos = inctory.getDemodaoinstance (). doSearch (키); for (demo demo : alldemos) {system.out.println (demo.toString ());} alldemos를 반환합니다. {system.out.println ( "추가 실패");}} public static void dochange (demo demo) {if (factory.getDemodaoinstance (). dochange (demo)) {system.out.println ( "modification"); else {system.out.println ( "modification develment");}}); {if (factory.getDemodaoinstance (). dodelete (id)) {system.out.println ( "Delte Delete");} else {system.out.println ( "Delete Delte");}}}/** 출력 결과는 선택 ID, 이름, 유형, 지불, 텍스트에서 성공적으로 추가되었습니다. pay = 0.98, text = text] 선택 ID, 이름, 유형, 지불, t_demo 데모에서 [id = 1, 이름 = 이름 = 이름, 유형 = 1, pay = 0.98, text = 텍스트 = 텍스트 = 텍스트 선택 ID, 이름, 유형, 유료, 지불, t_demo demo의 텍스트 [id = 1, name = name = 1, pay = 0.98, text = 텍스트, 이름, typ. 이름 = 이름, 유형 = 1, pay = 0.98, text = 텍스트] seterect modification id, name, type, pay, t_demo에서 where id = 1demo [id = 1, name = name, type = 1, pay = 0.98, text = Change Change] id, name, type, pay, text t_demo * */4. JSP 페이지 및 서블릿 섹션 (중요)
- 4.1. index.jsp (index.html에서 html 태그의 내용을 HTML 태그로 바꾸고 index.jsp에서 html의 컨텐츠를 수정하고 JS로 다음과 같은 수정을합니다.
<%@ page language = "java"import = "java.util.*"pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.get.gteRverport () <! "-// w3c // dtml 4.01 Transitional // en"> <html> <head> <title> demo </title> <link rel = "stylesheet"type = "text/css"href = "css/jquery-ui.min.css"/> href = "css/jquery-ui.theme.min.css"/> <link rel = "스타일 시트"유형 = "text/css"href = "css/ui.jqgrid-bootstrap-ui.css"/> <링크 rel = "Stylesheet"type = "text/css"css/u.jgrid. /> </head> <body> <div id = "main"> <!-jqgrid가 위치한 곳-> <table id = "grid-table"> </table> <!-jqgrid 브라우드 탐색 막대-> <div id = "grid-pager"> </div> </div> <script src = "js/jquery-1.11.0.min.js"text/juvas " 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"> // // 데이터 유형이 "로컬"인 경우 var grid_selector = "#grid-table"; var pager_selector = "#grid-pager"; $ (function () {$ ( "#grid-table")를 채워야합니다. 검색 : "<%= basepath%>"+"demoservlet", // 추가, 수정 및 삭제에 사용되는 servlet urllediturl : "<%= basepath%>"+"demochangeservlet", // data : grid_data, // datatype가 "로컬"할 때 : // 데이터 소스, 로컬 데이터를 채워야합니다. XML 등) 높이 : 150, // 높이, 테이블 높이. 값, 백분율 또는 'Auto'Mtype : "get", // 제출 방법 Colnames : ['Out-Out Order Number ','Out-Out Type ','총 금액 ','신청자 (Unit) ','Note '], ColModel : [{Name :'ID ','Id ', // index. 배경과의 상호 작용의 매개 변수는 sidxkey입니다 : true, // 서버 측에서 반환 된 데이터에 ID가 없으면이를 유일한 Rowid로 사용하고 하나의 열만 사용 하여이 설정을 수행하십시오. 하나 이상이 설정되면 첫 번째 하나만 선택되고 다른 하나만 선택되고 다른 하나는 폭을 무시합니다. 선택적 값 : 텍스트, TextArea, 선택, 확인란, 암호, 버튼, 이미지 및 파일 .seditoptions : {value : "1 :"1 : 구매 및 입력; 2 : "}}, {name : 'pay', 'pay', 'pay', 'pay', width : 60, sorttype :"double ", editable : 'name :'name : 'name', edital : 15, editent : 15, editent : 15, edital : 15, edital : 'name :'name ' {size : "20", maxlength : "30"}}, {name : 'text', index : 'text :'text ', width : 250, sortable : false, editable : true, edittype : "textArea", editoptions : {행 : "2", cols : "10"}},], View : // true, true // rownum : 10, // 페이지 rowlist 당 레코드 수를 표시합니다. [10, 20, 30], // 드롭 다운 목록 상자를 표시하기 위해 행 수를 변경하는 데 사용되는 요소 배열. Pager : Pager_Selector, // 페이지와 버튼이있는 브라우징 내비게이션 막대는 Altrows입니다. true, // 교대 행 테이블로 설정, 기본값은 false // toppager : true, // 브라우징 내비게이션 막대가 다중 선택에 표시되는지 : // 브라우징 탐색 막대가 다중 선택 여부에 관계없이 // 브라우징 바가 브라우징의 브라우징이든, // 브라우징 내비게이션 바가 다중 선택입니다. // 브라우징 내비게이션 바가 CTRL 키에 의해 다중 선택 여부에 관계없이 : // 확인란이 subgrid : true, // sortname : 'id', // 기본 정렬 방법 (asc ascending, desc descending list : // table autowidth : // true returning autowdth : // // auto-width}); // 기능 부품 코드 $ (grid_selector) .navgrid (pager_selector, {search : true, // letrieve add : true, // add is ledit : true, // modive (사무실은 진정으로 표시 될 수 있음) {}, // 옵션 편집 {}, // 옵션 추가 {}, // 옵션 {multipleSearch : true} // 검색 옵션 - 다중 검색 정의); </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.httpervax; import javax.servlet.httplet.httpepest javax.servlet.http.http.httervletresponse; import net.sf.json.jsonarray; import net.sf.json.json.json.json.json.json.json.json.json.json.json.json.json.json.json.json.json.json.json.jsonobject; import com.xeonmic.factory.factory; import com.xeonmic.vo.demo;/*** servle servletation classe demoservlet*/public class demoservlet extends httperver serialversionUid = 1l;/*** @see httpservlet#doget (httpservletrequest 요청, httpservletresponse response)*/protected void doget (httpservletrequest request, httpservletresponse responsk) servletexception, ioexception {request.setcharacteroding ( "); // 인코딩이 여기에 설정되지 않은 경우 garbled response.setContentType ( "text/html; charset = utf-8"); Response.SetHeader ( "Cache-Control", "No-Cache"); int rows = integer.valueof (request.getParameter ( "rows")); // 각 페이지에 표시된 레코드 수 int page = integer.valueof (request.getParameter ( "page")); // 현재 페이지 번호 string = request.getParameter ( "sord"); // 정렬 메서드 문자열 sidx = request.getParameter ( "sidx"); // 열 이름 boolean search = (request.getParameter ( "_ search"). equals ( "true")). set String keys = ""; // 쿼리 조건 문자열 if (search) {keys = "where"; String filters = request.getParameter ( "필터"); // 특정 조건 System.out.println (필터); // 들어오는 데이터의 형식은 다음과 유사합니다. "{"GroupOp ":"and ","Rules ": [{"field ":"id ","op ":"eq ","data ":"1 "}, {"field ":"type ","op ":"ew ","data ":"2 "}]}"jsonobject jsonobject = jsonobject.fromobject (filters); (및/또는) if (jsonobject.getString ( "groupop")! = null &&! "" jsonobject.getJsonArray ( "규칙"); // 각 조건 (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 = "; // sql stwitter (op)로 변환하기 시작하는 데 사용됩니다. = '+data+"'"; break; case "ne": // unequal string = "<> '"+data+"" "; break; case"li ": // string ="<' "+data+" ' "; break; case"le ": // string보다 작거나 동일합니다 ="+data+""; break "" "; "ge": // string = "> = '" "+data+"' "; break; break; case"bw ": // ty ... {if (data.split (", ") '+data+"'"; // 데이터 오류}}} break; case "bn": // steen "; // 데이터 오류}} break; case"ew ": // with ..."like '%"+data+" ""; break; break; case "en": // with with ... "with'with ..."like '%"+data+"' "; break; casn": // string = "like '%"+data+"%'"; '%"+data+"%' "; break; case"in ": // 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 ="; " i ++) {String+= " '"+Datas [i]+"'"; if (i! = datas.length-1) {String+= ",";} else {string+= ");}} break; default; system.out.println ("op 기호 오류 "); // op sevential error} if (op! if! if! if! if! (z == rulesjson.size () -1) {keys+= "+field+" "+string+" ";} else {keys+="+field+""+String+""+groupop+"";}}}} // (sidx! = null &&! " {system.out.println (sidx); keys += "주문에 의한 주문" +sidx; system.out.println ( "sord =" +sord); if (! sord.equals ( "asc")) {keys += "desc";}} alllist = inactory.getdemodaoinstance (); keys); total = (alllist.size ()%행 == 0)? j <alllist.size () && j <n; jarray.add (alllist.get (j)); 총); httpservletresponse 응답)*/보호 된 void dopost (httpservletrequest 요청, httpservletresponse 응답) servletexception, ioexception {// todo auto-regenated method stubthis.doget (요청, 응답);}}- 4.3. Demochangeservlet.java
package com.xeonmic.action; import java.io.ioexception; import javax.servlet.servletxception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.http.htervletr respont; com.xeonmic.factory.factory; import com.xeonmic.vo.demo; public class demochangeservlet는 httpservlet {/****/private static final long serialversionuid = 1l;/*** 서틀의 doget 메소드를 확장합니다. <br> **이 메소드는 태그 값 메소드가있는 경우에 호출됩니다.** @param 클라이언트가 서버로 보내는 요청을 클라이언트로 보내는 응답* @throws servletexception* @throws servletexception* @throws ioexception*/public void do throws (httpervletRequest). ioException {boolean flag = false; string; string opera = request.getParameter ( "Oper"); switch (case) {case "del": {string [] ids = request.getParameter ( "id"). split ( ","); for (int i = 0; i <ids.length; i ++) {int id = integer.valueof (ids [i]); factory.getDemodaoinstance (). dodelete (id);}} break; case "add": {int type = integer.valueof (request.getParameter ( "type")); double pay = double.value ( "request. name ("play "); = request.getParameter ( "text"); 데모 데모 = 새로운 데모 (-1, type, pay, name, text); 깃발 = 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")); getParameter ( "pay") 데모 = 새 데모 (id, type, pay, name, text); factory.getDemodaoinstance (). dochange (demo); } break; default : break;} system.out.println (flag);}/*** 서플렛의 도보 메소드. <br> **이 메소드는 양식에 태그 값 메소드가 게시되는 경우에 호출됩니다.** @param 클라이언트가 서버로 보내는 요청* @param 응답 서버가 클라이언트로 보내는 응답* @throws servletexception* @throws ioexception*/public void dopost (httpercquest 요청). servletexception, ioexception {this.doget (요청, 응답);}}—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 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> demochangerverver- </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 g> <servlet-mapping> <servlet-name> demochangeservlet </servlet-name> <Url-pattern>/demochangeservlet </url-pattern> </servlet-mapping> <welcome-file-list> <welcce-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-list> </web-appp>
이 시점에서 JQGRID 단일 테이블 함수가 완전히 구현되었습니다. 예제에 디자인 문제가 있는지 알려주십시오. 다음 기사는 마스터 및 슬레이브 테이블의 디자인 구현을 해결하기 시작합니다. 스크립트 직접 웹 사이트에주의를 기울이십시오!