一、将登录页面连接上数据库,登陆成功将进行页面转跳
JDBC步骤:
1.注册驱动类
2.连接数据库
3.定义对象,用来执行sql语句
4.给占位符赋值
5.执行sql语句
6.处理结果集
7.关闭连接
代码如下:
<%
//接收登录页面传递的用户名和密码
String buser=request.getParameter("textfield");
String bpwd=request.getParameter("textfield2");
//JDBC
Class.forName("oracle.jdbc.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:T277";
Connection con=DriverManager.getConnection(url, "scott", "tiger");
PreparedStatement ps=con.prepareStatement("select*from BGS where buser=? and bpwd=?");
ps.setString(1,buser);
ps.setString(2, bpwd);
ResultSet rs=ps.executeQuery();
if(rs.next()){
request.getRequestDispatcher("admin.jsp").forward(request, response);
}else{
out.print("<script>alert('用户名或密码错误,请重新输入');location.href='login.jsp'</script>");
}
%>
二、转跳页面后,要将数据库中的数据添加到页面上,所有我们又需要连接数据库
代码如下:
<%
//连接数据库,查询新闻信息
Class.forName("oracle.jdbc.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:T277";
Connection con=DriverManager.getConnection(url, "scott", "tiger");
PreparedStatement ps=con.prepareStatement("select * from news");
ResultSet rs=ps.executeQuery();
while(rs.next()){
%>
<li><%=rs.getString("ntile")%> <span> 作者:<%=rs.getString("nzz")%>
     <a href='#'>修改</a>
     <a href='#' onclick='return clickdel()'>删除</a>
</span>
</li>
<li class='space'></li>
<%} %>
为什么while循环的大括号为什么要这么写?
因为中间的那串代码是我们要循环的代码,也就是循环体,使用我们要用<%%>把括号写到最后。
页面效果如下:
登录完成,数据也添加到了页面,接下来就是对数据的维护了(也就是对数据的增删改查)
三、添加新闻数据
代码如下:
request.setCharacterEncoding("utf-8");
//接收添加页面的编号
//新闻主题编号
int tid=Integer.valueOf(request.getParameter("ntid"));
//新闻标题
String ntitle=request.getParameter("ntitle");
//新闻作者
String nzz=request.getParameter("nauthor");
//新闻内容
String nnr=request.getParameter("ncontent");
//新闻摘要
String nzy=request.getParameter("nsummary");
String url = "jdbc:oracle:thin:@localhost:1521:T277";
Class.forName("oracle.jdbc.OracleDriver");
Connection con=DriverManager.getConnection(url, "scott", "tiger");
//获取新闻下一个编号
PreparedStatement ps=con.prepareStatement("select max(nid) from news");
int nextNid=1;
ResultSet rs=ps.executeQuery();
if(rs.next()){
nextNid=rs.getInt(1)+1;
}
//添加新闻
ps=con.prepareStatement("insert into news values(?,?,?,?,?,sysdate,0,?)");
ps.setInt(1,nextNid);
ps.setInt(2, tid);
ps.setString(3, ntitle);
ps.setString(4, nzz);
ps.setString(5, nnr);
ps.setString(6, nzy);
//执行sql语句
int i=ps.executeUpdate();
if(i>0){
out.print("<script>alert('添加成功');location.href='../admin.jsp'</script>");
}else{
out.print("<script>alert('添加失败');location.href='add_news.jsp'</script>");
}
%>
当你的网页页面出现乱码是可使用这句代码:request.setCharacterEncoding("utf-8");
这段代码是获取新闻下一个编号,因为我们在表中是设置了主键自增,在代码中不能自增,所以我们需要求出下一个编号是什么
int nextNid=1;
ResultSet rs=ps.executeQuery();
if(rs.next()){
nextNid=rs.getInt(1)+1;
}
四、删除新闻数据
不管我们删除成功与否,我们都是在admin页面;../的意思是回退一级,以为我的两个页面不在同一个文件中,所以我需要用到../。
<%
//接收要删除的新闻编号
String id=request.getParameter("nid");
int nid=Integer.valueOf(id);
String url = "jdbc:oracle:thin:@localhost:1521:T277";
Class.forName("oracle.jdbc.OracleDriver");
Connection con=DriverManager.getConnection(url, "scott", "tiger");
PreparedStatement ps=con.prepareStatement("delete news where nid="+nid);
int i=ps.executeUpdate();
if(i>0){
out.print("<script>alert('删除成功');location.href='../admin.jsp'</script>");
}else{
out.print("<script>alert('删除失败');location.href='../admin.jsp'</script>");
}
%>