使用JSP做一个小小的新闻项目(END)

使用JSP做一个小小的新闻项目(END)

  • 用户主页:
    • show.jsp:用户的一个浏览界面
  • 管理员主页:
    • index.jsp:管理员主页(完全版,没多大变化,完善了一些机制)
  • 新闻阅读:
    • read.jsp:阅读主界面(同样是老面孔,但是变强了)
  • 新闻增加:
    • add.jsp:加了一点机制
  • 新闻修改:
    • upd.jsp:加了一点机制
  • 新闻的删除:此功能在阅读界面实现
    • doDel:处理删除新闻的请求
  • 评论的操作:此功能在阅读界面实现
    • doAddComment.jsp:处理增加评论的请求
    • doDelComment.jsp:处理删除评论的请求
  • 完整的源码:

项目我将会放在文章结尾处分享给大家,大家下载之后解压就可以了,数据库的建表语句和关系图我也一并放在压缩包里面了。
数据库的表格存在部分问题,主要是在缺少性别和年龄两个属性,有两个方法可以解决:一种是将doRegister.jsp中的增加语句修改一下,第二种就是修改数据库的表格。
还有就是增加语句有一点小小的问题,增加一个用户需要一个ID,可以在Oracle里面增加一个触发器,也可以再写一个查询最大ID的方法(SQL语句使用MAX),还可以手动修改

用户主页:

show.jsp:用户的一个浏览界面

<%@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)%> <% } } %>

效果如下:
使用JSP做一个小小的新闻项目(END)_第1张图片

管理员主页:

index.jsp:管理员主页(完全版,没多大变化,完善了一些机制)

<%@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(); } %>

新闻阅读:

read.jsp:阅读主界面(同样是老面孔,但是变强了)

<%@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(); } %>
">

新闻增加:

add.jsp:加了一点机制

<%@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拿不到数据) --%>
    
">
新闻标题
新闻类别
新闻作者
发布时间
新闻内容

新闻修改:

upd.jsp:加了一点机制

<%@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);
    }
%>
" name="userId">
新闻标题
新闻类别
新闻作者
发布时间
新闻内容
<% //关闭资源 if(con!=null&&!con.isClosed()){ con.close(); } if(ps!=null){ ps.close(); } if(rs!=null){ rs.close(); } %>

新闻的删除:此功能在阅读界面实现

doDel:处理删除新闻的请求

<%@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();
	}
%>

评论的操作:此功能在阅读界面实现

doAddComment.jsp:处理增加评论的请求

<%@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();
	}
%>

doDelComment.jsp:处理删除评论的请求

<%@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

你可能感兴趣的:(笔记,eclipse,tomcat,java-ee,java,html)