1.先建一個主頁面里面包含着添加方法
<%@page import="java.text.SimpleDateFormat"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*" %> <!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"> <title>學生信息</title> </head> <body> 學生信息列表 <br> <% try { //1.連接數據庫 // 1)加載驅動 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2)得到連接 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "test1", "duibuqi19950220"); //2.讀取 Statement st=conn.createStatement(); ResultSet rs=st.executeQuery("select * from STUDENT"); //3.輸出結果集 if(rs!=null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); while(rs.next()) { out.print("SNO="+rs.getString("SNO")+" "); out.print("name="+rs.getString("sname")+" "); out.print("ssex="+rs.getString("ssex")+" "); out.print("sbirthday="+ (rs.getDate("sbirthday")==null?rs.getDate("sbirthday"):sdf.format(rs.getDate("sbirthday")))+" "); out.print("class="+rs.getString("class")); out.print("<a href='update.jsp?SNO="+rs.getString("SNO")+"'>【修改】</a><a href='DeleteStudent?SNO="+rs.getString("SNO")+"'>【刪除】</a><br>"); } rs.close(); } //4.釋放資源 st.close(); conn.close(); } catch(Exception e) { e.printStackTrace(); } %> 添加學生信息<br> <form action="SaveStudent" method="post"> 學號:<input type="text" name="sno"><br> 名稱:<input type="text" name="sname"><br> 性別:<input type="text" name="ssex"><br> 生日:<input type="text" name="sbirthday"><br> 班級:<input type="text" name="class"><br> <input type="submit" value="保存"> </form> </body> </html>
2.建設修改和刪除的界面
<%@page import="java.text.SimpleDateFormat"%> <%@ page import="java.sql.*" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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"> <title>修改學生信息</title> </head> <body> <% //接收主鍵,從數據庫讀取最新數據再進行修改 try{ String sno=request.getParameter("SNO"); String sname=null; String ssex=null; String sbirthday=null; String sclass=null; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); if(sno!=null && sno.trim().length()>0) { //讀取最新數據 try { Class.forName("oracle.jdbc.driver.OracleDriver"); // 2)得到連接 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "test1", "duibuqi19950220"); PreparedStatement p=conn.prepareStatement( "select * from STUDENT where SNO=?"); p.setString(1, sno); ResultSet rs=p.executeQuery(); if(rs!=null&&rs.next()) { sname=rs.getString("sname"); ssex=rs.getString("ssex"); sbirthday=sdf.format(rs.getDate("sbirthday")); sclass=rs.getString("class"); rs.close(); } else { out.print("未查詢到數據"); } p.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } else { out.print("請正確訪問"); } %> 修改學生信息<br> <form action="SaveStudent" method="post"> 學號:<input type="text" name="sno" readonly="readonly" value="<%=sno %>"><br> 名稱:<input type="text" name="sname" value="<%=sname %>"><br> 性別:<input type="text" name="ssex" value="<%=ssex %>"><br> 生日:<input type="text" name="sbirthday" value="<%=sbirthday==null?"":sbirthday %>"><br> 班級:<input type="text" name="class" value="<%=sclass %>"><br> <input type="hidden" name="isupdate" value="1"> <input type="submit" value="保存"> </form> <% }catch(Exception e) { } %> </body> </html>
3.加上過濾器Filter包含轉碼防止在網頁中出現亂碼
package com.hanqi.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MyFilter implements Filter {
public MyFilter() {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
4.刪除Servlet類
package com.hanqi.web;
import java.sql.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class DeleteStudent
*/
public class DeleteStudent extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public DeleteStudent() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sno=request.getParameter("SNO");
if(sno!=null&& sno.trim().length()!=0)
{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2)得到連接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "test1", "duibuqi19950220");
//2.刪除數據
// Statement st=conn.createStatement();
// st.executeUpdate("");
PreparedStatement pst=conn.prepareStatement(
"delete STUDENT where "+"SNO=?");
pst.setString(1, sno);
pst.executeUpdate();
pst.close();
conn.close();
//4.跳轉頁面
response.getWriter().write("刪除成功");
response.setHeader("refresh", "3;URL=index.jsp");
} catch (Exception e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
response.getWriter().write("刪除失敗");
response.setHeader("refresh", "3;URL=index.jsp");
}
}
else
{
response.getWriter().write("請正確提交數據");
response.setHeader("refresh", "3;URL=index.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
5.Servlet包含插入和修改的方法
package com.hanqi.web; import java.sql.*; import java.text.SimpleDateFormat; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class SaveStudent */ public class SaveStudent extends HttpServlet { private static final long serialVersionUID = 1L; public SaveStudent() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //處理保存數據的請求 //1.接收參數 String sno=request.getParameter("sno"); String sname=request.getParameter("sname"); String ssex=request.getParameter("ssex"); String sbirthday=request.getParameter("sbirthday"); String sclass=request.getParameter("class"); //是否更新 String isupdate=request.getParameter("isupdate"); //2.驗證 if(sno!=null&& sno.trim().length()!=0 &&sname!=null&& sname.trim().length()!=0) { //3.保存 try { Class.forName("oracle.jdbc.driver.OracleDriver"); // 2)得到連接 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "test1", "duibuqi19950220"); //2.插入數據 // Statement sat=conn.createStatement(); // st.executeUpdate(""); //執行插入還是更新 //插入 PreparedStatement pst=conn.prepareStatement( "insert into STUDENT (sname,ssex,sbirthday,class,sno)"+ "values(?,?,?,?,?)"); if(isupdate!=null&& isupdate.equals("1")) { //更新 pst = conn.prepareStatement( "update STUDENT set sname=?,ssex=?,sbirthday=?,class=? where sno=?"); } //插入 //String 轉成 Date //關於日期格式的類 //可以進行日期轉換 SimpleDateFormat adf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date bir= adf.parse(sbirthday); //使用 long 型的時間構造sql.Date Date sqlBir = new Date(bir.getTime()); pst.setString(1, sname); pst.setString(2, ssex); pst.setDate(3, sqlBir); pst.setString(4, sclass); pst.setString(5, sno); pst.executeUpdate(); pst.close(); conn.close(); //4.跳轉頁面 response.getWriter().write("保存成功"); response.setHeader("refresh", "3;URL=index.jsp"); } catch (Exception e) { e.printStackTrace(); response.getWriter().write("保存失敗"); response.setHeader("refresh", "3;URL=index.jsp"); } } else { response.getWriter().write("請正確提交數據"); response.setHeader("refresh", "3;URL=index.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
package com.hanqi.web; import java.sql.*; import java.text.SimpleDateFormat; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class SaveStudent */ public class SaveStudent extends HttpServlet { private static final long serialVersionUID = 1L; public SaveStudent() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //處理保存數據的請求 //1.接收參數 String sno=request.getParameter("sno"); String sname=request.getParameter("sname"); String ssex=request.getParameter("ssex"); String sbirthday=request.getParameter("sbirthday"); String sclass=request.getParameter("class"); //是否更新 String isupdate=request.getParameter("isupdate"); //2.驗證 if(sno!=null&& sno.trim().length()!=0 &&sname!=null&& sname.trim().length()!=0) { //3.保存 try { Class.forName("oracle.jdbc.driver.OracleDriver"); // 2)得到連接 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "test1", "duibuqi19950220"); //2.插入數據 // Statement sat=conn.createStatement(); // st.executeUpdate(""); //執行插入還是更新 //插入 PreparedStatement pst=conn.prepareStatement( "insert into STUDENT (sname,ssex,sbirthday,class,sno)"+ "values(?,?,?,?,?)"); if(isupdate!=null&& isupdate.equals("1")) { //更新 pst = conn.prepareStatement( "update STUDENT set sname=?,ssex=?,sbirthday=?,class=? where sno=?"); } //插入 //String 轉成 Date //關於日期格式的類 //可以進行日期轉換 SimpleDateFormat adf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date bir= adf.parse(sbirthday); //使用 long 型的時間構造sql.Date Date sqlBir = new Date(bir.getTime()); pst.setString(1, sname); pst.setString(2, ssex); pst.setDate(3, sqlBir); pst.setString(4, sclass); pst.setString(5, sno); pst.executeUpdate(); pst.close(); conn.close(); //4.跳轉頁面 response.getWriter().write("保存成功"); response.setHeader("refresh", "3;URL=index.jsp"); } catch (Exception e) { e.printStackTrace(); response.getWriter().write("保存失敗"); response.setHeader("refresh", "3;URL=index.jsp"); } } else { response.getWriter().write("請正確提交數據"); response.setHeader("refresh", "3;URL=index.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
