JSP+JDBC留言管理程序
-- 创建表 -- 用户表(登陆)、留言表 -- 删除表 DROP TABLE person ; DROP TABLE note ; -- 删除序列 DROP SEQUENCE note_sequ ; -- 创建序列 CREATE SEQUENCE note_sequ ; -- 创建person表 CREATE TABLE person ( id varchar(20) not null primary key , name varchar(20) , password varchar(20) ) ; -- 创建留言表 CREATE TABLE note ( id int not null primary key , -- sequence title varchar(20) not null , author varchar(20) not null , content varchar(50) not null ) ; -- 插入测试数据 INSERT INTO person VALUES ('darkness','wind','zzzzzz') ; INSERT INTO person VALUES ('sky','could','mmmmmm') ; -- 事务提交 commit ;
--------------------------login.jsp-------------------- <%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% // 判断是否有错误信息,如果有则打印 // 如果没有此段代码,则显示时会直接打印null if(request.getAttribute("err")!=null) { %> <h2><%=request.getAttribute("err")%></h2> <% } %> <form action="login_conf.jsp" method="post"> <table width="80%"> <tr> <td colspan="2">用户登陆</td> </tr> <tr> <td>用户名:</td> <td><input type="text" name="id"></td> </tr> <tr> <td>密 码:</td> <td><input type="password" name="password"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="登陆"> <input type="reset" value="重置"> </td> </tr> </table> </form> </center> </body> </html>
----------------login_conf.jsp---------- <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <%! String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; String DBURL = "jdbc:oracle:thin:@localhost:1521:sky" ; String DBUSER = "scott" ; String DBPASSWORD = "darkness" ; Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; %> <% // 声明一个boolean变量,用于保存用户是否合法的状态 boolean flag = false ; // 接收参数 String id = request.getParameter("id") ; String password = request.getParameter("password") ; %> <% String sql = "SELECT name FROM person WHERE id=? and password=?" ; try { Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ; pstmt.setString(1,id) ; pstmt.setString(2,password) ; rs = pstmt.executeQuery() ; if (rs.next()) { // 用户合法 flag = true ; // 将用户名保存在session之中 session.setAttribute("uname",rs.getString(1)) ; } else { // 保存错误信息 request.setAttribute("err","错误的用户名及密码!!!") ; } rs.close() ; pstmt.close() ; conn.close() ; } catch (Exception e) { } %> <% // 跳转 if (flag) { // 用户合法 %> <jsp:forward page="login_success.jsp"/> <% } else { // 用户非法 %> <jsp:forward page="login.jsp"/> <% } %> </center> </body> </html>
----------------login_success.jsp------------ <%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <h2>登陆成功</h2> <h2>欢迎<font color="red" size="12"> <%=session.getAttribute("uname")%> </font>光临 留言程序</h2> <h3><a href="list_notes.jsp">进入留言管理页面</a></h3> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>
-------------------------insert.jsp------------------ <%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <form action="insert_do.jsp" method="post"> <table> <tr> <td colspan="2">添加新留言</td> </tr> <tr> <td>标题:</td> <td><input type="text" name="title"></td> </tr> <tr> <td>作者:</td> <td><input type="text" name="author"></td> </tr> <tr> <td>内容:</td> <td><textarea name="content" cols="30" rows="6"></textarea></td> </tr> <tr> <td colspan="2"> <input type="submit" value="添加"> <input type="reset" value="重置"> </td> </tr> </table> </form> <h3><a href="list_notes.jsp">回到留言列表页</a></h3> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>
--------------------------insert_do.jsp-------------------------- <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% // 进行乱码处理 request.setCharacterEncoding("GB2312") ; %> <% if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <%! String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; String DBURL = "jdbc:oracle:thin:@localhost:1521:sky" ; String DBUSER = "scott" ; String DBPASSWORD = "tiger" ; Connection conn = null ; PreparedStatement pstmt = null ; %> <% // 声明一个boolean变量 boolean flag = false ; // 接收参数 String title = request.getParameter("title") ; String author = request.getParameter("author") ; String content = request.getParameter("content") ; %> <% // 现在note表中的主键是sequence生成 String sql = "INSERT INTO note VALUES(note_sequ.nextVal,?,?,?)" ; try { Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ; pstmt.setString(1,title) ; pstmt.setString(2,author) ; pstmt.setString(3,content) ; pstmt.executeUpdate() ; pstmt.close() ; conn.close() ; // 如果插入成功,则肯定能执行到此段代码 flag = true ; } catch(Exception e) { } %> <% response.setHeader("refresh","2;URL=list_notes.jsp") ; if(flag) { %> 留言添加成功,两秒后跳转到留言列表页!!!<br> 如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!! <% } else { %> 留言添加失败,两秒后跳转到留言列表页!!!<br> 如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!! <% } %> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>
---------------------------update.jsp----------- <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <%! String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; String DBURL = "jdbc:oracle:thin:@localhost:1521:sky" ; String DBUSER = "scott" ; String DBPASSWORD = "tiger" ; Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; %> <% // 接收参数 int id = 0 ; try { id = Integer.parseInt(request.getParameter("id")) ; } catch(Exception e) { } %> <% // 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示 int i = 0 ; String sql = "SELECT id,title,author,content FROM note WHERE id=?" ; try { Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ; // 设置查询条件 pstmt.setInt(1,id) ; rs = pstmt.executeQuery() ; %> <% if(rs.next()) { i++ ; // 进行循环打印,打印出所有的内容,以表格形式 // 从数据库中取出内容 id = rs.getInt(1) ; String title = rs.getString(2) ; String author = rs.getString(3) ; String content = rs.getString(4) ; %> <form action="update_do.jsp" method="post"> <table> <tr> <td colspan="2">添加新留言</td> </tr> <tr> <td>标题:</td> <td><input type="text" name="title" value="<%=title%>"></td> </tr> <tr> <td>作者:</td> <td><input type="text" name="author" value="<%=author%>"></td> </tr> <tr> <td>内容:</td> <td><textarea name="content" cols="30" rows="6"><%=content%></textarea></td> </tr> <tr> <td colspan="2"> <input type="hidden" name="id" value="<%=id%>"> <input type="submit" value="更新"> <input type="reset" value="重置"> </td> </tr> </table> </form> <% } else { %> 没有发现,要更新的内容!!<br> 请确认要更新的留言是否存在!!<br> <% } %> <% rs.close() ; pstmt.close() ; conn.close() ; } catch(Exception e) { } %> <h3><a href="list_notes.jsp">回到留言列表页</a></h3> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>
-------------------------- update_do.jsp----------------------------------------- <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% // 进行乱码处理 request.setCharacterEncoding("GB2312") ; %> <% if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <%! String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; String DBURL = "jdbc:oracle:thin:@localhost:1521:sky" ; String DBUSER = "scott" ; String DBPASSWORD = "tiger" ; Connection conn = null ; PreparedStatement pstmt = null ; %> <% // 声明一个boolean变量 boolean flag = false ; // 接收参数 String title = request.getParameter("title") ; String author = request.getParameter("author") ; String content = request.getParameter("content") ; int id = 0 ; try { id = Integer.parseInt(request.getParameter("id")) ; } catch(Exception e) { } %> <% // 更新note表中的数据 String sql = "UPDATE note set title=?,author=?,content=? WHERE id=?" ; try { Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ; pstmt.setString(1,title) ; pstmt.setString(2,author) ; pstmt.setString(3,content) ; pstmt.setInt(4,id); pstmt.executeUpdate() ; pstmt.close() ; conn.close() ; // 如果修改成功,则肯定能执行到此段代码 flag = true ; } catch(Exception e) { } %> <% response.setHeader("refresh","2;URL=list_notes.jsp") ; if(flag) { %> 留言修改成功,两秒后跳转到留言列表页!!!<br> 如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!! <% } else { %> 留言修改失败,两秒后跳转到留言列表页!!!<br> 如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!! <% } %> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>
----------------------delete_do.jsp-------------------- <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <%! String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; String DBURL = "jdbc:oracle:thin:@localhost:1521:sky" ; String DBUSER = "scott" ; String DBPASSWORD = "tiger" ; Connection conn = null ; PreparedStatement pstmt = null ; %> <% // 接收参数 int id = 0 ; try { id = Integer.parseInt(request.getParameter("id")) ; } catch(Exception e) { } %> <% String sql = "DELETE FROM note WHERE id=?" ; boolean flag = false ; try { Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ; // 设置删除条件 pstmt.setInt(1,id) ; pstmt.executeUpdate() ; pstmt.close() ; conn.close() ; flag = true ; } catch(Exception e) { } %> <% response.setHeader("refresh","2;URL=list_notes.jsp") ; if(flag) { %> 留言删除成功,两秒后跳转到留言列表页!!!<br> 如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!! <% } else { %> 留言删除失败,两秒后跳转到留言列表页!!!<br> 如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!! <% } %> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>
-----------------list_notes.jsp------------------------------------- <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <head> <title>JSP+JDBC 留言管理程序——登陆</title> </head> <body> <center> <h1>留言管理范例 —— JSP + JDBC实现</h1> <hr> <br> <% // 编码转换 request.setCharacterEncoding("GB2312") ; if(session.getAttribute("uname")!=null) { // 用户已登陆 %> <%! String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; String DBURL = "jdbc:oracle:thin:@localhost:1521:sky" ; String DBUSER = "scott" ; String DBPASSWORD = "tiger" ; Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; %> <% // 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示 int i = 0 ; String sql = null; String keyword = request.getParameter("keyword") ; // out.println(keyword) ; if(keyword==null) { // 没有任何查询条件 sql = "SELECT id,title,author,content FROM note" ; } else { // 有查询条件 sql = "SELECT id,title,author,content FROM note WHERE title like ? or author like ? or content like ?" ; } try { Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ; // 如果存在查询内容,则需要设置查询条件 if(keyword!=null) { // 存在查询条件 pstmt.setString(1,"%"+keyword+"%") ; pstmt.setString(2,"%"+keyword+"%") ; pstmt.setString(3,"%"+keyword+"%") ; } rs = pstmt.executeQuery() ; %> <form action="list_notes.jsp" method="POST"> 请输入查询内容:<input type="text" name="keyword"> <input type="submit" value="查询"> </form> </h3><a href="insert.jsp">添加新留言</a></h3> <table width="80%" border="1"> <tr> <td>留言ID</td> <td>标题</td> <td>作者</td> <td>内容</td> <td>删除</td> </tr> <% while(rs.next()) { i++ ; // 进行循环打印,打印出所有的内容,以表格形式 // 从数据库中取出内容 int id = rs.getInt(1) ; String title = rs.getString(2) ; String author = rs.getString(3) ; String content = rs.getString(4) ; if(keyword!=null) { // 需要将数据返红 title = title.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ; author = author.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ; content = content.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ; } %> <tr> <td><%=id%></td> <td><a href="update.jsp?id=<%=id%>"><%=title%></a></td> <td><%=author%></td> <td><%=content%></td> <td><a href="delete_do.jsp?id=<%=id%>">删除</a></td> </tr> <% } // 判断i的值是否改变,如果改变,则表示有内容,反之,无内容 if(i==0) { // 进行提示 %> <tr> <td colspan="5">没有任何内容!!!</td> </tr> <% } %> </table> <% rs.close() ; pstmt.close() ; conn.close() ; } catch(Exception e) { } %> <% } else { // 用户未登陆,提示用户登陆,并跳转 response.setHeader("refresh","2;URL=login.jsp") ; %> 您还未登陆,请先登陆!!!<br> 两秒后自动跳转到登陆窗口!!!<br> 如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <% } %> </center> </body> </html>