나는 오랫동안 블로그를 쓰지 않았습니다. 나는 너무 게으르고 시간을 보내지 않을 수도 있습니다. 그러나 나는 여전히 내 마음에 블로그를 작성하는 것이 중요하다는 것을 알고 있습니다. 그래서 오늘부터 나는 당신에게 내가 배운 Java Web을 배운 몇 가지 작은 예를 당신과 공유 할 것입니다. 나는 개인적으로 책의 모호한 개념을 좋아하지 않으므로 일부 응용 프로그램 예제에서 더 많은 시간을 보냈습니다. 나는이 학습 방법이 단순에서 전통적, 얕은 곳에서 깊이에 이르기까지 매우 적합하다고 생각합니다.
말도 안되는 이야기를하고 첫 번째 예를 시작하겠습니다.
서블릿은 Oracle Basic 추가, 삭제, 수정 및 검색을 구현합니다
개발 환경 : JDK7 +MyEclipse10 +Tomcat7.0 +Oracle 11g
먼저 데이터베이스 작성 스크립트를 첨부하십시오.
테이블 학생 (Id Varchar2 (50) 기본 키가 아닌 varchar2 (50) null, calssgrent varchar2 (50) null not null, result varchar (12) null); 학생 (id, name, calssgrent, result) 값 (perseq.nextval, 'Zhang San', '33', '98')에 삽입
다음 그림은 함수를 구현하기 위해 잘못 수행되지 않은 코드 구조 다이어그램 및 기능 데모 인터페이스를 보여줍니다.
mmc_01.java
페이지 // 기본 인터페이스는 추가, 수정 및 삭제 방법을 제공합니다.
패키지 org.lsy.servlet; import java.io.ioexception; import java.io.printwriter; java.sql.connection 가져 오기; Java.SQL.DriverManager 가져 오기; java.sql.resultset import; java.sql.statement import; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import oracle.jdbc.oracore.tdspatch; 공개 클래스 MMC_01 확장 httpservlet {// 드라이버는 클래스 경로에서 구성된 JDBC 드라이버의 JAR 패키지에 있습니다. // 데이터베이스에 연결하기위한 사용자 이름 public static final String dbuser = "scott"; // 데이터베이스에 연결하기위한 비밀번호 공개 정적 최종 문자열 dbpass = "Tiger"; public void doget (httpservletrequest request, httpservletreponse response)가 servletexception을 던지고, ioexception {// 요청과 응답의 인코딩을 설정하고 그렇지 않으면 페이지 요청에 쉽게 표시되는 코드가 나타납니다 .SetchAracterEncoding ( "UTF-8"); 응답 .SetchAracterEncoding ( "UTF-8"); Response.setContentType ( "Text/Html; UTF-8"); // 출력 스트림 printwriter out = response.getWriter (); // 데이터베이스 연결 코드 시도 {Connection Conn = null; // 데이터베이스 문에 대한 연결을 나타내는 객체 stmt = null; // 데이터베이스 문자열의 업데이트 작동을 나타냅니다. sql = "학생 (id, name, calssgrent, result) 값 ('67 ','liu 12yu ','33 ','98 ')에 삽입."; System.out.println (SQL); // 1. 클래스 클래스를 사용하여 드라이버 클래스를로드합니다 .forname ( "oracle.jdbc.driver.oracledriver"); // 2. 데이터베이스에 연결 Conn = DriverManager.GetConnection (DBURL, DBUSER, DBPASS); // 3. 문 인터페이스를 연결 인터페이스를 통해 인스턴스화해야합니다. stmt = conn.createstatement (); // rs를 사용하여 쿼리 결과를 얻습니다. 여기에 SQL 문을 사용하지 않는 것이 가장 좋습니다. out.println ( "<! doctype html public/"-// w3c // dtd html 4.01 Transitional // en/">"); out.println ( "<head> <title> a servlet </title> </head>"); out.println ( "<body>"); // 출력 테이블 헤더 out.print ( "<테이블 align = 'center'border = '1'> <td> <td> name" + "</td> <td> class </td> <td> score </td> <td> modify </td> delete </td> </tr>"); while (rs.next ()) {// 데이터베이스 문자열에서 ID를 가져옵니다. id = rs.getString ( "id"); // 요소 열이 출력 out.print ( "<tr> <td>"+rs.getString ( "name")+"</td> <td>"+rs.getString ( "calssgrent")+"+"+"</td> <td>"+rs.getstring ( "result")+"</td>"<a <a <a <a. href = 'updatepage? id = "+id+"'> modify </a> </td> "+"<td> <a href = 'delete? id = "+id+"'> delete </a> </td> </tr> "); } out.println ( "<td> <a href = addPage> 데이터 추가 </a> </td>"); out.println ( "</body>"); out.println ( "</html>"); conn.close (); } catch (예외 e) {e.printstacktrace (); } out.flush (); out.close (); }}updatepage.java // 수정 될 데이터를 가져 와서 수정 된 데이터를 업데이트 할 수 있습니다.
패키지 org.lsy.servlet; import java.io.ioexception; import java.io.printwriter; java.sql.connection 가져 오기; Java.SQL.DriverManager 가져 오기; java.sql.resultset import; java.sql.statement import; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; com.sun.crypto.provider.rsacipher; Public Class UpdatePage 확장 httpservlet {// 연결 주소는 각 데이터베이스 제조업체에서 별도로 제공되므로 별도로 공개 정적 최종 문자열 DBURL = "JDBC : ORACLE : THIN : @LOCALHOST : 1521 : LIUSY"; // 데이터베이스에 연결하기위한 사용자 이름 public static final String dbuser = "scott"; // 데이터베이스에 연결하기위한 비밀번호 공개 정적 최종 문자열 dbpass = "Tiger"; public void doget (httpservletrequest request, httpservletreponse responsk) servletexception, ioexception {string id = request.getParameter ( "id"); // 요청 및 응답의 인코딩을 설정하십시오. 그렇지 않으면 검은 코드가 페이지 요청에 쉽게 나타납니다 .SetchAracterEncoding ( "UTF-8"); 응답 .SetchAracterEncoding ( "UTF-8"); Response.setContentType ( "Text/Html; UTF-8"); printwriter out = response.getwriter (); try {connection conn = null; // 데이터베이스 문의 연결을 나타내는 객체 stmt = null; // 데이터베이스 업데이트 작업 // 1. 클래스 클래스를 사용하여 드라이버 클래스를로드합니다 .forname ( "oracle.jdbc.driver.oracledriver"); // 2. 데이터베이스에 연결 Conn = DriverManager.GetConnection (DBURL, DBUSER, DBPASS); // 3. 문 인터페이스는 연결 인터페이스를 통해 인스턴스화해야합니다. stmt = conn.createstatement (); // rs를 사용하여 쿼리 결과를 얻습니다. 여기서 SQL 문을 사용하지 않는 것이 가장 좋습니다. while (rs.next ()) {out.println ( "<! doctype html public/"-// w3c // dtml 4.01 Transitional // en/">"); out.println ( "<html>"); out.println ( "<head> <title> a servlet </title> </head>"); out.println ( "<body>"); // 점수 양식을 입력하고 업데이트로 제출합니다. out.print ( "<테이블 align = 'center'> <tr> <td> 이름 : <input type = 'text'value = '"+rs.getString ( "name")+"' ' 이름 = 'name'size = 20> </td> </tr> "); out.print ("<tr> <td> class : <input type = 'text'value = '+rs.getString ( "calssgrent")+"'name = 'grent'size = 20> </td> </tt>"); out.print ( "<tr> <td> <input type = '' '텍스트. value = '+rs.getString ( "result")+"'name = 'result'size = 20> </td> </tr>"); // 데이터베이스를 쿼리하기위한 조건으로 사용하려면, ID가 여기에 전달되어야합니다 ( "<input type = 'hidden'value = ''" 'name ='id '> "); 'value ='modify '> <input type ='reset 'value ='reset 'value ='reset '> </td> </trave> </form> "); out.print ("</body> "); out.println ("</html> ");} out.flush (); out.close ();//////////////////} catch todo : 핸들 예외}}} update.java는 수정할 데이터를 수신하고 데이터베이스를 업데이트합니다.
패키지 org.lsy.servlet; import java.io.ioexception; import java.io.printwriter; java.sql.connection 가져 오기; Java.SQL.DriverManager 가져 오기; java.sql.statement import; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; 공개 클래스 업데이트 확장 httpservlet {// 드라이버는 클래스 경로에서 구성된 JDBC 드라이버의 JAR 패키지입니다. // 데이터베이스에 연결하기위한 사용자 이름 public static final String dbuser = "scott"; // 데이터베이스에 연결하기위한 비밀번호 공개 정적 최종 문자열 dbpass = "Tiger"; public void doget (httpservletrequest request, httpservletresponse 응답)은 servletexception, ioexception {try {request.setcharacterencoding ( "utf-8"); 응답 .SetchAracterEncoding ( "UTF-8"); Response.setContentType ( "Text/Html; UTF-8"); printwriter out = response.getwriter (); 연결 Conn = null; // 데이터베이스 문의 연결을 나타내는 개체 stmt = null; // 데이터베이스 업데이트 작업 // 매개 변수 string id = request.getParameter ( "id")를 가져옵니다. System.out.println (id); 문자열 이름 = request.getParameter ( "name"); 문자열 grant = request.getParameter ( "Grent"); 문자열 결과 = request.getParameter ( "결과"); // sql string sqlstring = "업데이트 학생 세트 이름 = '+name+"', "+"calssgrent = ' "+grent+"', result = '+result+"'where id = '+id+" "; // 1. 클래스 클래스를 사용하여 드라이버 클래스를로드합니다 .forname ( "oracle.jdbc.driver.oracledriver"); // 2. 데이터베이스에 연결 Conn = DriverManager.GetConnection (DBURL, DBUSER, DBPASS); // 3. 문 인터페이스는 연결 인터페이스를 통해 인스턴스화해야합니다. stmt = conn.createstatement (); int pd = stmt.executeUpdate (sqlstring); if (pd! = 0) {out.println ( "<! doctype html public/"-// w3c // dtml 4.01 Transitional // en/">"); out.println ( "<html>"); out.println ( "<head> <title> a servlet </title> </head>"); out.println ( "<body>"); out.print ( "성공적으로 업데이트 <Br> <a href = mmc_01>보기 목록 </a>"); out.println ( "</body>"); out.println ( "</html>"); } out.flush (); out.close (); stmt.close (); conn.close (); } catch (예외 e) {// todo : hands exception}} public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {doget (요청, 응답); }}AddPage .java, 데이터 페이지를 추가하십시오
패키지 org.lsy.servlet; import java.io.ioexception; import java.io.printwriter; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; Public Class AddPage는 httpservlet {public void doget (httpservletrequest request, httpservletreponse response)을 servletexception, ioexception {// 요청 및 응답의 인코딩을 설정하면 페이지 request.setcharacterencoding ( "utf-8")에 쉽게 나타납니다. 응답 .SetchAracterEncoding ( "UTF-8"); Response.setContentType ( "Text/Html; UTF-8"); printwriter out = response.getwriter (); out.println ( "<! doctype html public/"-// w3c // dtd html 4.01 Transitional // en/">"); out.println ( "<html>"); out.println ( "<head> <title> a servlet </title> </head>"); out.println ( "<body>"); // 점수 양식을 입력하고 추가하여 제출합니다. out.print ( "<테이블 align = 'center'> <tr> <td> 이름 : <입력 유형 = 'text'name = 'name'size = 20> </td> </tr>"); out.print ( "<tr> <td> 클래스 : <입력 유형 = 'text'name = 'grent'size = 20> </td> </tr>"); out.print ( "<tr> <td> 점수 : <입력 유형 = 'text'name = 'result'size = 20> </td> </tr>"); out.print ( "<tr> <td> <입력 유형 = '제출'값 = 'add'> <입력 유형 = '재설정'값 = '재설정'> </td> </tr> </table> </form>"); out.println ( "<tr> <td> <a href = mmc_01>보기 목록 </a> </td> </tr>"); out.println ( "</body>"); out.println ( "</html>"); out.flush (); out.close (); }}추가 페이지에서 전송 수신 및 데이터베이스를 업데이트하십시오.
패키지 org.lsy.servlet; import java.io.ioexception; import java.io.printwriter; java.sql.connection 가져 오기; Java.SQL.DriverManager 가져 오기; Java.sql.preparedStatement import; java.sql.resultset import; java.sql.statement import; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import com.sun.org.apache.xerces.internal.impl.io.utf8reader; import oracle.jdbc.oracore.tdspatch; 공개 클래스 추가 확장 httpservlet {// 드라이버는 클래스 경로에서 구성된 JDBC 드라이버의 JAR 패키지에 있습니다. // 데이터베이스에 연결하기위한 사용자 이름 public static final String dbuser = "scott"; // 데이터베이스에 연결하기위한 비밀번호 공개 정적 최종 문자열 dbpass = "Tiger"; @override protected void dopost (httpservletrequest req, httpservletresponse resp) servletexception, ioexception {// todo 자동 생성 메소드 stub doget (req, resp); } public void doget (httpservletRequest 요청, httpservletResponse 응답)은 servletexception, ioexception {// 요청 및 응답의 인코딩을 설정합니다. 그렇지 않으면 페이지 요청에 쉽게 표시되는 코드가 나타납니다. 응답 .SetchAracterEncoding ( "UTF-8"); Response.setContentType ( "Text/Html; UTF-8"); // 출력 스트림 printwriter out = response.getWriter (); // 데이터베이스 연결 코드 시도 {Connection Conn = null; // 데이터베이스에 대한 연결을 나타내는 객체 pstmt = null; // 데이터베이스 문자열의 업데이트 작동을 나타냅니다. namestring = request.getParameter ( "name"); String grantstring = request.getParameter ( "Grent"); 문자열 resulttring = request.getParameter ( "결과"); System.out.print (namestring); 문자열 sql = "학생 삽입 (id, name, calssgrent, result)값 (perseq.nextval, '+namestring+"', '"+grentstring+"', '"+resultstring+"')"; // 1. 클래스 클래스를 사용하여 드라이버 class.forname ( "oracle.jdbc.driver.oRacledRiver"); // 2. driverConnection (dburl, dbuser); PSTMT = CONTERSTATEMENT (PD! = 0) (PD! e.printstacktrace () out.clush ();
web.xml 구성 파일
<? xml version = "1.0"encoding = "utf-8"?> <web-app version = "2.5"xmlns = "http://java.sun.com/xml/xml/ns/javaee"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance. xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5_5.xsd"> <display-name> </display-name> <Servlet-name> mmc_01 </servlet-name> <servlet-class> org.lsy.servlet.mmc_01 </servlet-class> </servlet> <servlet> <servlet-name> delete </servlet-name> <servlets- class> org.lsy.servlet.delete> </servlet> </servlet> <servlet-name> add </servlet-name> <servlet-class> org.lsy.servlet.add </servlet-class> </servlet> <servlet-name> addPage </servlet-name> <servlet-class> org.lsy.servlet.addpage </servlets- class> <servlet> uppated-name> <Servlet-class> org.lsy.servlet.updatepage </servlet-class> </servlet> <servlet> <servlet-name> 업데이트 </servlet-name> <servlet-class.lsy.servlet.update </servlet-class> </servlet> <servlet-mapping> <servlet-name> mmc_01 </servlet-name> <Url-pattern>/mmc_01 </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> delete </servlet-name> <Url-pattern>/delete </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> <urlpattn> <ll-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> addPage </servlet-name> <Url-pattern>/addPage </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> updatepage </servlet-name> <url-pattern> </url-pattern> </url-pattern> <servlet-mapping> <servlet-name> 업데이트 </servlet-name> <Url-pattern>/update </url-pattern> </servlet-mapping> </web-app>
나는 오래된 새가 아니고 배우고 있습니다. 실수가 있으면 증명하십시오. 위의 코드에는 많은 중복 부분과 비합리적인 부분이 많이 있습니다. 데이터베이스 연결과 비교하여 작업 서블릿에 직접 노출됩니다. 더 직관적으로보기 위해 나는 그것을 바꾸지 않았다 ...
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.