主页面新闻展示
主页面的新闻显示会与数据库中的新闻表一致
<!-- 需求:完成后台主页面的新闻显示绑定 start -->
<ul class="classlist">
<%
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","123");
//sql语句
String sql = "select * from tb_news";
//将sql语句传入方法返回执行对象
PreparedStatement ps = conn.prepareStatement(sql);
//根据执行对象调用方法返回结果集对象
ResultSet rs = ps.executeQuery();
//遍历结果集
while(rs.next()){
out.println("<li> <a href='admin_newsDetail.jsp?nid="+rs.getInt(1)+"'>"+rs.getString(3)+"</a> <span> 作者:"+rs.getString(4)+" <a href='admin_editNews.jsp?nid="+rs.getInt(1)+"'>修改</a> <a href='javascript:void(0)' οnclick='clickdel(\""+rs.getInt(1)+"\")'>删除</a></span> </li>");
}
%>
=
<li class='space'></li>
<p align="right"> 当前页数:[1/3] <a href="#">下一页</a> <a href="#">末页</a> </p>
</ul>
<!-- 需求:完成后台主页面的新闻显示绑定 stop-->
</div>
删除功能
主界面上的代码
跳转到删除页面(传递编号)
<script language="javascript">
function clickdel(nid) {
//alert(id+"---"+typeof(id));
//js传输参数 可以通过location.href进行页面跳转 do处理页面
var flag = window.confirm("你确定要删除这篇新闻吗?");
if(flag){
//跳转
window.location.href = 'doDelNews.jsp?nid='+nid;
}
}
</script>
删除页面:
拿到编号进行删除,
在跳转到主界面。
<%
//该页面的作用:获取admin.jsp点击删除时的新闻编号获取 然后数据库交互 将其编号的新闻进行删除
//1. 设置相关的编码格式
request.setCharacterEncoding("utf-8");
//2.获取location.href传递过来的参数编号(新闻编号)
String id = request.getParameter("nid");
//新闻编号 数据库 number 需要转换
int nid = 0;
if(null!=id){
nid = Integer.valueOf(id);
}
//3.数据库交互 根据新闻编号 进行删除新闻
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","123");
//sql语句
String sql = "delete from tb_news where nid = ?";
//将sql语句传入方法返回执行对象
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, nid);
//返回所影响的行数
int n = ps.executeUpdate();
//4.判断:删除成功----admin.jsp 删除不成功----admin.jsp
if(n>0){
out.println("<script>alert('删除成功');location.href='admin.jsp'</script>");
}else{
out.println("<script>alert('删除失败');location.href='admin.jsp'</script>");
}
%>
查看功能
主页显示时,可以通过超链接点击,跳转到查看界面,传递对应的编号,再通过编号拿到所有相关数据。
<div class="content">
<!-- 该区域实现新闻详情显示 start -->
<%
//定义所谓变量(新闻标题,发布时间,点击量,新闻内容等等)
String ntitle = "";//标题
String ndate = "";//发布时间
String nauthor = "";//作者
String ncontent = "";//内容
int ncount = 0;//点击量
//1.设置编码
request.setCharacterEncoding("utf-8");
//2.获取id
String id = request.getParameter("nid");
//转换
int nid = 0;
if(null!=id){
nid = Integer.valueOf(id);
}
//3.获取数据
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","123");
//sql语句
String sql = "select * from tb_news where nid = ?";
//将sql语句传入方法返回执行对象
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, nid);
//返回结果集对象
ResultSet rs = ps.executeQuery();
//if改造
if(rs.next()){
ntitle = rs.getString(3);
ndate = rs.getString(8);
nauthor = rs.getString(4);
ncontent = rs.getString(6);
ncount = rs.getInt(9);
}
%>
<ul class="classlist">
<table width="80%" align="center">
<tr width="100%">
<td colspan="2" align="center"><%=ntitle %>
点击量 <%=ncount %></td>
</tr>
<tr>
<td colspan="2">
<hr />
</td>
</tr>
<tr>
<td align="center"><%=ndate %></td>
<td align="left"><%=nauthor %> </td>
</tr>
<tr>
<td colspan="2" align="center"></td>
</tr>
<tr>
<td colspan="2"> <%=ncontent %> </td>
</tr>
<tr>
<td colspan="2">
<hr />
</td>
</tr>
</table>
</ul>
<ul class="classlist">
<table width="80%" align="center">
<td colspan="6"> 暂无评论! </td>
<tr>
<td colspan="6">
<hr />
</td>
</tr>
</table>
</ul>
<!-- 该区域实现新闻详情显示 stop-->
</div>
修改功能
首先将该编号的内容显示到类似新增界面上
> <div id="opt_area">
> <h1 id="opt_type"> 修改新闻: </h1>
> <!-- 修改新闻的模块 -->
> <% ```
> //设置编码
> request.setCharacterEncoding("UTF-8");
>
> //获取编号
> String id = request.getParameter("nid");
> int nid = 0;
> if (null != id) {
> nid = Integer.valueOf(id);
> }
>
> //数据库
> //加载驱动
> Class.forName("oracle.jdbc.driver.OracleDriver");
> //建立连接
> Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl",
> "scott", "123");
> //sql语句
> String sql = "select * from tb_news where nid = ?";
> //将sql语句传入方法返回执行对象
> PreparedStatement ps = conn.prepareStatement(sql);
> ps.setInt(1, nid);
> //返回结果集对象
> ResultSet rs = ps.executeQuery();
> int ntid = 0;
> String ntitle = "";
> String nauthor = "";
> String nsummary = "";
> String ncontent = "";
> String nimage = "";
> String ndate = "";
> int ncount = 0;
> if(rs.next()){
> ntid = rs.getInt(2);//分类编号
> ntitle = rs.getString(3);
> nauthor = rs.getString(4);
> nsummary = rs.getString(5);
> ncontent = rs.getString(6);
> nimage = rs.getString(7);
> ndate = rs.getString(8);
> ncount = rs.getInt(9);
>
> }
>
> %>
>
> <form action="doEditNews.jsp" method="post">
> <p>
> <label> 主题 </label>
> <select name="ntid">
> <%
> //模块:新闻分类的数据绑定
> sql = "select * from tb_news_theme";
> //传入方法返回执行对象
> ps = conn.prepareStatement(sql);
> //调用方法返回结果集对象
> rs = ps.executeQuery();
> //遍历结果集
> while(rs.next()){
> //上面已经根据新闻id获取到当前这篇新闻的分类id while循环中可以遍历出所有的新闻分类
> if(ntid == rs.getInt(1)){
> out.println("<option selected = 'selected' value = '"+rs.getInt(1)+"'>"+rs.getString(2)+"</option>");
> }else{
> out.println("<option value = '"+rs.getInt(1)+"'>"+rs.getString(2)+"</option>");
> }
>
> }
> %>
> </select>
> </p>
> <p>
> <label> 标题 </label>
> <input name="ntitle" type="text" class="opt_input" value="<%=ntitle %>" />
> </p>
> <p>
> <label> 作者 </label>
> <input name="nauthor" type="text" class="opt_input" value="<%=nauthor %>" />
> </p>
> <p>
> <label> 摘要 </label>
> <textarea name="nsummary" cols="40" rows="3" value="123">
> <%=nsummary %>
> </textarea>
> </p>
> <p>
> <label> 内容 </label>
> <textarea name="ncontent" cols="70" rows="10">
> <%=ncontent %>
> </textarea>
> </p>
> <p>
> <label> 上传图片 </label>
> <input name="file" type="file" class="opt_input" />
> </p>
> <input name="nid" type="hidden" value="<%=nid%>">
> <input type="submit" value="提交" class="opt_sub" />
> <input type="reset" value="重置" class="opt_sub" />
> </form> </div>
点击提交后,传递编号,会在该处进行数据处理,实现修改操作。
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//设置编码
request.setCharacterEncoding("utf-8");
//获取参数
//新闻编号(通过input的hidden隐藏域传递过来)
String id = request.getParameter("nid");
int nid = 0;
if (null != id) {
nid = Integer.valueOf(id);
}
//新闻分类编号
String tid = request.getParameter("ntid");
int ntid = 0;
if (null != tid) {
ntid = Integer.valueOf(tid);
}
//标题
String ntitle = request.getParameter("ntitle");
//作者
String nauthor = request.getParameter("nauthor");
//摘要
String nsummary = request.getParameter("nsummary");
//内容
String ncontent = request.getParameter("ncontent");
//图片不处理
//获取当前的系统(java 转换--oracle to_date oracle sysdate)
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String ndate = sdf.format(date);
//点击量不处理
//数据库交互
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "123");
//sql语句
String sql = "update tb_news set ntid = ? , ntitle = ? , nauthor = ? , nsummary = ? , ncontent = ? , ndate = to_date(?,'yyyy-mm-dd hh24:mi:ss') where nid = ?";
//将sql语句传入方法返回执行对象
PreparedStatement ps = conn.prepareStatement(sql);
//给占位符赋值
ps.setInt(1, ntid);
ps.setString(2,ntitle);
ps.setString(3,nauthor);
ps.setString(4,nsummary);
ps.setString(5,ncontent);
ps.setString(6,ndate);
ps.setInt(7,nid);
//返回影响的行数
int n = ps.executeUpdate();
if(n>0){
out.println("<script>alert('修改成功');location.href='admin.jsp'</script>");
}else{
out.println("<script>alert('修改失败');location.href='admin_editNews.jsp?nid="+nid+"'</script>");
}
%>
主题绑定
主题的下拉框显示会与数据库中的主题表一致:
<form action="doAddNews.jsp" method="post">
<p>
<label> 主题 </label>
<select name="ntid">
<!-- 新闻分类的数据绑定 start -->
<%
//需求:1.完成新闻分类的数据绑定
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","123");
//sql语句
String sql = "select * from tb_news_theme";
//传入方法返回执行对象
PreparedStatement ps = conn.prepareStatement(sql);
//调用方法返回结果集对象
ResultSet rs = ps.executeQuery();
//遍历结果集
while(rs.next()){
out.println("<option value = '"+rs.getInt(1)+"'>"+rs.getString(2)+"</option>");
}
%>
</select>
</p>
谢谢浏览 点个关注再走吧!!