一.今日内容主要是主题绑定.查看.修改.删除案例
① 主题绑定
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@page import="java.net.ConnectException"%> <%@ 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> <link rel="stylesheet" type="text/css" href="css/2.css" /> </head> <body> <div id="header"> <div id="welcome">欢迎使用新闻管理系统!</div> <div id="nav"> <div id="logo"><img src="images/logo.jpg" alt="新闻中国" /></div> <div id="a_b01"><img src="images/a_b01.gif" alt="" /></div> </div> </div> <div id="admin_bar"> <div id="status">管理员: 登录     <a href="#">退出</a></div> <div id="channel"> </div> </div> <div id="main"> <div id="opt_list"> <ul> <li><a href="admin.html">管 理 首 页</a></li> <li><a href="add_news.jsp">新 闻 发 布</a></li> <li><a href="admin_themeMaintain.html">主 题 维 护</a></li> <li><a style="color: red;" href="#">系统账号管理</a></li> <li><a style="color: red;" href="#">注册用户管理</a></li> </ul> </div> <div id="opt_area"> <h1 id="opt_type"> 添加新闻: </h1> <form action="doAddNews.jsp" method="post"> <!-- 新闻分类的数据绑定 start --> <p> <label> 主题 </label> <select name="ntid"> <% //需求: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> <!-- 新闻分类的数据绑定 start --> <p> <label> 标题 </label> <input name="ntitle" type="text" class="opt_input" /> </p> <p> <label> 作者 </label> <input name="nauthor" type="text" class="opt_input" /> </p> <p> <label> 摘要 </label> <textarea name="nsummary" cols="40" rows="3"></textarea> </p> <p> <label> 内容 </label> <textarea name="ncontent" cols="70" rows="10"></textarea> </p> <p> <label> 上传图片 </label> <input name="file" type="file" class="opt_input" /> </p> <input name="action" type="hidden" value="addnews"> <input type="submit" value="提交" class="opt_sub" /> <input type="reset" value="重置" class="opt_sub" /> </form> </div> </div> <div id="site_link"> <a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span> <a href="#">联系我们</a><span>|</span> <a href="#">广告服务</a><span>|</span> <a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span> <a href="#">招聘信息</a><span>|</span> <a href="#">网站地图</a><span>|</span> <a href="#">留言反馈</a> </div> <div id="footer"> <p class="">24小时客户服务热线:010-68988888      <a href="#">常见问题解答</a>      新闻热线:010-627488888<br /> 文明办网文明上网举报电话:010-627488888      举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p> <p class="copyright">Copyright © 1999-2009 News China gov, All Right Reserver<br /> 新闻中国 版权所有</p> </div> </body> </html>
② 查看
<div class="main">
<div class="class_type"> <img src="images/class_type.gif" alt="新闻中心" /> </div>
<div class="content">
<!-- 该区域实现新闻详情显示 start -->
<%
//定义所谓的变量
int ntid=0;
String ntitle="";
String nauthor="";
String nsummary="";
String ncontent="";
String nimage="";
String ndate="";
int ncount=10;
//设置编码
request.setCharacterEncoding("utf-8");
//获取id
String id=request.getParameter("nid");
//转换
int nid=0;
if(id != null){
nid=Integer.valueOf(id);
}
//获取数据
//建立连接
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);
nauthor=rs.getString(4);
ncontent=rs.getString(6);
ndate=rs.getString(8);
ncount=rs.getInt(9);
}
%>
<ul class="classlist">
<table width="80%" align="center">
<tr width="100%">
<td align="center"><%=ntitle %></td>
<td>点击量:<%=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>
</div>
</div>
</div>
③ 修改
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新闻维护--管理后台</title>
<link rel="stylesheet" type="text/css" href="css/2.css" />
</head>
<body>
<div id="header">
<div id="welcome">欢迎使用新闻管理系统!</div>
<div id="nav">
<div id="logo">
<img src="images/logo.jpg" alt="新闻中国" />
</div>
<div id="a_b01">
<img src="images/a_b01.gif" alt="" />
</div>
</div>
</div>
<div id="admin_bar">
<div id="status">
管理员: 登录     <a href="#">退出</a>
</div>
<div id="channel"></div>
</div>
<div id="main">
<div id="opt_list">
<ul>
<li><a href="admin.html">管 理 首 页</a></li>
<li><a href="admin_addNews.html">新 闻 发 布</a></li>
<li><a href="admin_themeMaintain.html">主 题 维 护</a></li>
<li><a style="color: red;" href="#">系统账号管理</a></li>
<li><a style="color: red;" href="#">注册用户管理</a></li>
</ul>
</div>
<div id="opt_area">
<h1 id="opt_type">修改新闻:</h1>
<!-- 修改新闻的模块 -->
<%
//定义所谓的变量
int ntid = 0;
String ntitle = "";
String nauthor = "";
String nsummary = "";
String ncontent = "";
String nimage = "";
String ndate = "";
int ncount = 10;
//设置编码
request.setCharacterEncoding("utf-8");
//获取id
String id = request.getParameter("nid");
//转换
int nid = 0;
if (id != null) {
nid = Integer.valueOf(id);
}
//获取数据
//建立连接
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()) {
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()) {
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>");
}
}
%>
<option value="1">选择</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>
</div>
<div id="site_link">
<a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span>
<a href="#">联系我们</a><span>|</span> <a href="#">广告服务</a><span>|</span>
<a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span>
<a href="#">招聘信息</a><span>|</span> <a href="#">网站地图</a><span>|</span>
<a href="#">留言反馈</a>
</div>
<div id="footer">
<p class="">
24小时客户服务热线:010-68988888      <a href="#">常见问题解答</a>
     新闻热线:010-627488888<br />
文明办网文明上网举报电话:010-627488888      举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a>
</p>
<p class="copyright">
Copyright © 1999-2009 News China gov, All Right Reserver<br />
新闻中国 版权所有
</p>
</div>
</body>
</html>
//中转站
<%@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");
//2.获取location.href传递过来的参数编号(新闻编号)
String id = request.getParameter("nid");
//新闻编号 数据库 number
int nid = 0;
if (id != null) {
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");
//获取当前事件
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String ndate = sdf.format(date);
//数据库交互
//建立连接
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>");
}
%>
④ 删除
<script language="javascript">
function clickdel(nid) {
//js传输参数 可以通过location.href进行页面跳转 中转页面
var flag = window.confirm("你确定要删除吗?");
if(flag){
//跳转
window.location.href = 'doDelNews.jsp?nid='+nid;
}
}
</script>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//编码格式
request.setCharacterEncoding("utf-8");
//2.获取location.href传递过来的参数编号(新闻编号)
String id=request.getParameter("nid");
//新闻编号 数据库 number
int nid =0;
if(id!=null){
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="delete from tb_news where nid=?";
//传入方法返回执行对象
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,nid);
//返回影响的行数
int n=ps.executeUpdate();
//判断 删除成功跳转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>");
}
%>
二.知识点
① 发布新闻主题数据绑定
第一种方式
<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(rs.getInt(1)+" "+rs.getString(2));
%>
out.println("<option value='<%=rs.getInt(1)%>'><%=rs.getString(2) %></option>")
<%
}
%>
</select>
</p>
第二种方式<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>
② admin.jsp主页面新闻数据绑定
<!-- 需求:完成后台主页面的新闻显示绑定 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='#'>"+rs.getString(3)+"</a> <span> 作者:"+rs.getString(4)+"      <a href='#'>修改</a>      <a href='#' οnclick='return clickdel()'>删除</a></span> </li>");
}
%>
<li class='space'></li>
<p align="right"> 当前页数:[1/3] <a href="#">下一页</a> <a href="#">末页</a> </p>
</ul>
③ admin.jsp主页面中的单个删除新闻的实现
由于删除新闻是通过超链接实现,所以必须保证阻止超链接跳转
<a href = "javascript:void(0)" onclick = "clickdel('"+nid+"')">超链接</a>
<a href = "doDelNew.jsp?nid=<%=rs.getInt(1)>">超链接</a>
function clickdel(nid) {
//alert(id+"---"+typeof(id));
//js传输参数 可以通过location.href进行页面跳转 do处理页面
var flag = window.confirm("你确定要删除这篇新闻吗?");
if(flag){
//跳转
window.location.href = 'doDelNews.jsp?nid='+nid;
}
}
doDelNews.jsp
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//该页面的作用:获取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>");
}
%>