模糊查询
<%
//模糊查询
//当adminHome.jsp页面一运行,查询所有数据,没有点击搜索按钮
//当输入框中输入数据后,点击了搜索按钮,提交。本页面, 获取表单提交的值 传入sql语句
//获取模糊查询的关键词
//1.设置编码格式
request.setCharacterEncoding("utf-8");
//2.获取form表单提交的关键词
String strName = request.getParameter("strName");
//输出strName时 判断依据
//如果strName 结果null 说明我们没有点击搜索按钮 意味着 查看所有新闻。
//如果strName 结果不为null 说明我们点击了搜索按钮 意味着 显示对应模糊查询的新闻
String sql = "select * from tb_02_news";
if (null == strName) {
System.out.println("首次访问,没有手动点击搜索按钮,strName = " + strName);
System.out.println("首次访问,没有手动点击搜索按钮,sql = " + sql);
//查看所有数据 sql = select * from tb_t281_news
} else {
System.out.println("首次访问,手动点击搜索按钮,strName = " + strName);
//模糊查询 sql = select *from tb_t281_news where ntitle like '%"+strName+"%';
//问题:当查询时,如果是非中文,可以查询到,中文 就会出现乱码
//浏览器的原因
//解码和编码 实现手段:破碎重组 String对象中提供的方法来实现
//1.需要将含中文的字符进行解码 转成字节数组,识别纯英文格式
byte[] bytes = strName.getBytes("ISO-8859-1");
//2.通过String对象提供的构造函数进行编码,编译成UTF-8的格式中文
strName = new String(bytes, "utf-8");
sql += " where ntitle like '%" + strName + "%'";
System.out.println("首次访问,手动点击搜索按钮,sql = " + sql);
}
%>
首页主题和新闻绑定
<%@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="admin/css/main.css" />
</head>
<body>
<div id="header">
<div id="top_login">
<span style = "font-size:14px;cursor:pointer;font-weight:bold;">卓京教育新闻网首页</span>
【<a href = "">请注册</a>】
<%
//获取用户名
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
if(null == username){
out.println("【<a href = 'login.jsp'>登录</a>】");
}else{
out.println("<span>当前用户:"+username+"</span><a href='#'>退出登录</a>");
}
%>
<img src="admin/images/friend_logo.gif" alt="Google" id="friend_logo" /> </div>
<div id="nav">
<div id="logo"> <img src="admin/images/logo.jpg" alt="新闻中国" /> </div>
<div id="a_b01"> <img src="admin/images/a_b01.gif" alt="" /> </div>
<!--mainnav end-->
</div>
</div>
<div class="main">
<div class="class_type"> <img src="admin/images/class_type.gif" alt="新闻中心" /> </div>
<div class="content">
<!-- 新闻分类显示 -->
<ul class="class_date">
<li id='class_month'>
<%
//1.数据库交互显示新闻分类
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orc", "scott", "123");
//调用方法返回执行对象
String sql ="select * from tb_02_themes";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
out.println("<a href='index.jsp?ntid="+rs.getInt(1)+"'><b> "+rs.getString(2)+" </b></a> ");
}
%>
</li>
</ul>
<!--新闻信息 -->
<ul class="classlist">
<!-- 新闻信息的数据库交互 -->
<%
//默认查看所有。
sql = "select * from tb_02_news";
//获取点击指定主题的编号 超链接跳转
String tid = request.getParameter("ntid");
int ntid = 0;
if(null!=tid){
ntid = Integer.valueOf(tid);
}
//tid获取的结果为null 说明没有点击主题名称 查看所有
//tid获取的结果不为null 说明点击了主题名称 根据主题编号查找对应的新闻
if(tid==null){//查看所有
System.out.println("没有点击主题,查看所有新闻");
}else{//不为空
sql+=" where ntid = "+ntid;
}
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
out.println("<li><a href='news_read.jsp?nid="+rs.getInt(1)+"&username="+username+"'> "+rs.getString(3)+"</a><span> "+rs.getString(8)+" </span></li>");
}
%>
<p align="right"> 当前页数:[1/2] <a href="#">下一页</a> <a href="#">末页</a> </p>
</ul>
</div>
<div class="picnews">
<ul>
<li> <a href="#"><img src="admin/images/Picture1.jpg" width="249" alt="" /> </a><a href="#">幻想中穿越时空</a> </li>
<li> <a href="#"><img src="admin/images/Picture2.jpg" width="249" alt="" /> </a><a href="#">国庆多变的发型</a> </li>
<li> <a href="#"><img src="admin/images/Picture3.jpg" width="249" alt="" /> </a><a href="#">新技术照亮都市</a> </li>
<li> <a href="#"><img src="admin/images/Picture4.jpg" width="249" alt="" /> </a><a href="#">群星闪耀红地毯</a> </li>
</ul>
</div>
</div>
</div>
<div id="friend">
<h1 class="friend_t"> <img src="admin/images/friend_ico.gif" alt="合作伙伴" /> </h1>
</div>
</body>
</html>
发表评论
<%@page import="java.text.SimpleDateFormat"%>
<%@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 language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//设置编码
request.setCharacterEncoding("utf-8");
//获取form表单提交的评论字段
//编号
int cid = 0;
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orc", "scott", "123");
//调用方法返回执行对象
String sql = "select nvl(max(cid),0) from tb_02_comment";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
cid = rs.getInt(1) + 1;
}
//用户编号
int cuserid = 0;
String username = request.getParameter("cauthor");
//交互 根据username获取该用户的编号
sql = "select * from tb_02_users where username = ?";
ps = conn.prepareStatement(sql);
ps.setString(1,username);
rs = ps.executeQuery();
if(rs.next()){
cuserid = rs.getInt(1);
}
//新闻编号
int nid = 0;
String id = request.getParameter("nid");
if(null!=id){
nid = Integer.valueOf(id);
}
//ip地址
String cip = request.getParameter("cip");
//内容
String ccontent = request.getParameter("ccontent");
//时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String cdate = sdf.format(date);
//交互---插入评论
sql = "insert into tb_02_comment values(?,?,?,?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'))";
ps = conn.prepareStatement(sql);
ps.setInt(1,cid);
ps.setInt(2,cuserid);
ps.setInt(3,nid);
ps.setString(4,cip);
ps.setString(5,ccontent);
ps.setString(6,cdate);
int n = ps.executeUpdate();
if(n>0){
out.println("<script>alert('评论成功');location.href='news_read.jsp?username="+username+"&nid="+nid+"'</script>");
}else{
out.println("<script>alert('评论失败');location.href='news_read.jsp?username="+username+"&nid="+nid+"'</script>");
}
%>
include指令
1.include指令属于jsp的三大指令之一
2.三大指令:page/include/taglib
3.include指令作用:引入页面
<%@ include file = "指定页面名称"%>