项目我将会放在文章结尾处分享给大家,大家下载之后解压就可以了,数据库的建表语句和关系图我也一并放在压缩包里面了。
数据库的表格存在部分问题,主要是在缺少性别和年龄两个属性,有两个方法可以解决:一种是将doRegister.jsp中的增加语句修改一下,第二种就是修改数据库的表格。
还有就是增加语句有一点小小的问题,增加一个用户需要一个ID,可以在Oracle里面增加一个触发器,也可以再写一个查询最大ID的方法(SQL语句使用MAX),还可以手动修改
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Document
<%
String topicId=request.getParameter("topicId");
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("SELECT * FROM T_TOPIC");
//获得结果集
ResultSet rs=ps.executeQuery();
while(rs.next()){
if(topicId!=null){
%>
"><%=rs.getString(2)%>
<%
}else{
%>
<%=rs.getString(2)%>
<%
}
}
%>
<%
String sql="SELECT * FROM T_NEWS";
if(topicId!=null){
sql+=" WHERE NEWS_TOPIC="+topicId;//这里需要在语句前面加上一个空格
}
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
%>
-
" data-placement="bottom" data-toggle="tooltip" title="<%=rs.getString(2) %>">
<%=rs.getString(2) %>
<%=rs.getString(4) %>
<%=rs.getInt(8) %>
<%=rs.getInt(9) %>
<%=rs.getString(5) %>
<%
}
%>
<%@page import="java.nio.charset.StandardCharsets"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String userId=request.getParameter("userId");
//判断是否为管理员,不是则返回登录界面
if(userId.equals("null")){
out.print("");
return;
}
%>
主页
<%--底下三行是导入的外部样式 --%>
<%--自定义的样式 --%>
<%
//拿到查询的值
String newsName=request.getParameter("newsName");
if(newsName==null){
newsName="";
}
//破碎重组,用于post传输的中文数据接收
//newsName = new String(newsName.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("SELECT * FROM T_NEWS WHERE NEWS_TITLE LIKE ?");
ps.setString(1,"%"+newsName+"%");
//获得结果集
ResultSet rs=ps.executeQuery();
//结果集中可能有有很多的数据
while(rs.next()){
%>
-
" data-placement="bottom" data-toggle="tooltip" title="<%=rs.getString(2) %>">
<%=rs.getString(2) %>
<%=rs.getString(4) %>
<%=rs.getInt(8) %>
<%=rs.getInt(9) %>
<%=rs.getString(5) %>
<%
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
bootstrap
<%
String newsId=request.getParameter("newsId");
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("SELECT * FROM T_NEWS WHERE NEWS_ID=?");
ps.setInt(1,Integer.parseInt(newsId));
//获得结果集
ResultSet rs=ps.executeQuery();
//定义需要的值
String title="";
int count=0;
String author="";
String publisher="";
String content="";
//赋值
if(rs.next()){
title=rs.getString(2);
publisher=rs.getString(5);
author=rs.getString(4);
content=rs.getString(6);
count=rs.getInt(8)+1;//当前你阅读了一次
}
//新闻已经被阅读了,阅读量加1
ps=con.prepareStatement("UPDATE T_NEWS SET NEWS_COUNT=NEWS_COUNT+1 WHERE NEWS_ID=?");
ps.setInt(1,Integer.parseInt(newsId));
ps.executeUpdate();
%>
<%=title%>
<%=author%>
<%=count%>
<%=publisher%>
<%=content%>
<%
ps=con.prepareStatement("SELECT * FROM T_COMMENT WHERE COMMENT_FROM=?");
ps.setInt(1,Integer.parseInt(newsId));
rs=ps.executeQuery();
while(rs.next()){
%>
<%=rs.getString(4) %>
<%=rs.getString(5) %>
&commentId=<%=rs.getInt(1)%>" class="btn btn-info" id="del">删除
<%=rs.getString(3) %>
<%
}
%>
<%
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String userId=request.getParameter("userId");
//判断是否为管理员,不是则返回登录界面
if(userId.equals("null")){
out.print("");
return;
}
%>
增加新闻
<%--底下三行是导入的外部样式 --%>
<%--自定义的样式 --%>
<%--表单,action是提交的地址,需要给input和select标签加上name属性(不然doAdd拿不到数据) --%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Connection" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String userId=request.getParameter("userId");
//判断是否为管理员,不是则返回登录界面
if(userId.equals("null")){
out.print("");
return;
}
%>
bootstrap
<%
//获得新闻的id
String newsId = request.getParameter("newsId");
//加载驱动
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");
//定义连接字符串
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con = DriverManager.getConnection(url, "scott", "tiger");
//查询所有的新闻数据
PreparedStatement ps = con.prepareStatement("SELECT * FROM T_NEWS WHERE NEWS_ID=?");
//占位符的设置
ps.setInt(1,Integer.parseInt(newsId));
//得到结果集
ResultSet rs = ps.executeQuery();
//定义需要的值
String title="";
int topic=0;
String author="";
String publisher="";
String content="";
if(rs.next()){
//可以取值
title=rs.getString(2);
publisher=rs.getString(5);
author=rs.getString(4);
content=rs.getString(6);
topic=rs.getInt(3);
}
%>
<%
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String userId=request.getParameter("userId");
if(userId.equals("null")){
out.print("");
return;
}
String newsId=request.getParameter("newsId");
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("DELETE FROM T_NEWS WHERE NEWS_ID=?");
ps.setInt(1,Integer.parseInt(newsId));
//获得结果集
int i = ps.executeUpdate();
if(i>0){ //删除成功
out.print("");
}else{ //删除失败
out.print("");
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
%>
<%@page import="java.util.Date"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//修改请求的字符编码
request.setCharacterEncoding("UTF-8");
//拿到所有的数据
String newsId=request.getParameter("newsId");
String publisher=new Date().toLocaleString();//拿到当前时间
String author=request.getParameter("author");
String content=request.getParameter("content");
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("SELECT NVL(MAX(COMMENT_ID),0) FROM T_COMMENT");
//获得结果集
ResultSet rs=ps.executeQuery();
int id=0;
if(rs.next()){
id=rs.getInt(1);
}
id++;//避免主键重复
//编写插入数据库的语句
String sql="INSERT INTO T_COMMENT(COMMENT_ID,COMMENT_FROM,COMMENT_PUBLISHER,COMMENT_AUTHOR,COMMENT_CONTENT) VALUES(?,?,?,?,?)";
ps=con.prepareStatement(sql);
ps.setInt(1, id);
ps.setInt(2,Integer.parseInt(newsId));
ps.setString(3, publisher);
ps.setString(4, author);
ps.setString(5, content);
int n=ps.executeUpdate();
//判断是否增加成功
if(n>0){
out.print("");
}else{
out.print("");
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String userId=request.getParameter("userId");
//判断是否为管理员,不是则返回登录界面
if(userId.equals("null")){
out.print("");
return;
}
String commentId=request.getParameter("commentId");
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("DELETE FROM T_COMMENT WHERE COMMENT_ID=?");
ps.setInt(1,Integer.parseInt(commentId));
//获得结果集
int i = ps.executeUpdate();
if(i>0){ //删除成功
out.print("");
}else{ //删除失败
out.print("");
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
%>
链接:https://pan.baidu.com/s/1b1K1KUJpGfkhp4UTwjjwGA?pwd=zygx
提取码:zygx