Java Web快速入门(模糊查询&评论&include指令)

各位看官好,今天我带来的是JSP项目如何使用下拉框+文本框实现模糊查询,发表评论以及include指令。

目录

一、模糊查询

a、破碎重组

二、发表评论

a、隐藏域传值

三、include指令

a、include包含指令的作用

b、步骤:

c、运用 


一、模糊查询

SQL代码:

  select nid,ntitle,nauthor from 表名 where 列名 like '%关键字%' order by nid desc

用下拉框+文本框实现模糊查询

下拉框+文本框代码:

<form action="/s4/news/admin.jsp" method="post">
	<select name="option"><!-- 下拉框 -->
	    <option value="ntitle">标题</option>
	    <option value="nauthor">作者</option>
	</select>
		 <!-- 关键字: -->
		<input type="text" name="title"/>
		<input type="submit" value="查询" />
	</form>

查询语句:

  <%
    //接收title option
    String option=request.getParameter("option");
    String title=request.getParameter("title");
    if(title==null){
    	title="";//相当于查询全部
    	option="ntitle";
    }
    //破碎重组
    title=new String(title.getBytes("iso-8859-1"),"utf-8");
    //jdbc连接Oracle查询所有新闻 :id 新闻标题 作者
    String CNAME="oracle.jdbc.driver.OracleDriver";
    String URL="jdbc:oracle:thin:@localhost:1521:orcl";
    //加载驱动
    Class.forName(CNAME);
    //创建链接
    Connection con=DriverManager.getConnection(URL, "scott", "tiger");
    //定义sql语句
    String sql="select nid,ntitle,nauthor from news280 where "+option+" like '%"+title+"%' order by nid desc";
    //out.print(sql);
    //获得执行对象
    PreparedStatement ps=con.prepareStatement(sql);
    //获得结果集
    ResultSet rs=ps.executeQuery();
	    //循环遍历
	    while(rs.next()){
	    %>
	      <li><a href='/s4/news/read.jsp?nid=<%=rs.getInt(1) %>'><%=rs.getString(2) %></a>
	      <span> 作者:<%=rs.getString(3) %>&#160;&#160;&#160;&#160;
	       <a href='/s4/news/update.jsp?nid=<%=rs.getInt(1)%>'>修改</a> &#160;&#160;&#160;&#160; 
	       <a href='/s4/news/dodelete.jsp?nid=<%=rs.getInt(1) %>' onclick='return clickdel()'>删除</a> 
	       </span> 
	       </li>
	     <%
	   	 }
    //关闭资源
    if(con!=null&&!con.isClosed()){
    	con.close();
    }
    if(ps!=null){
    	ps.close();
    }
    if(rs!=null){
    	rs.close();
    }
     %>

a、破碎重组

new String(title.getBytes("编码方式"),"编码方式");


二、发表评论

我们需要在上篇文章中的阅读页面实现用户评论的功能。

思路:将评论的内容添加到数据库中,然后再从数据库里将评论的内容展示到页面中。

a、隐藏域传值

<!-- 隐藏域传值  hidden隐藏-->

<input name="nid" type="hidden" value="<%=nid%>"/>

阅读界面:

<div id="header">
  <div id="top_login">
    <label> 登录名 </label>
    <input type="text" id="uname" value="" class="login_input" />
    <label> 密&#160;&#160;码 </label>
    <input type="password" id="upwd" value="" class="login_input" />
    <input type="button" class="login_sub" value="登录" onclick="login()"/>
    <label id="error"> </label>
    <a href="/s4/index.jsp" class="login_link">返回首页</a> <img src="/s4/images/friend_logo.gif" alt="Google" id="friend_logo" /> </div>
  <div id="nav">
    <div id="logo"> <img src="/s4/images/logo.jpg" alt="新闻中国" /> </div>
    <div id="a_b01"> <img src="/s4/images/a_b01.gif" alt="" /> </div>
    <!--mainnav end-->
  </div>
</div>
<div id="container">
  <div class="sidebar">
  <div id="opt_list">
    <ul>
      <li><a href="/s4/news/add.jsp">添加新闻</a></li>
      <li><a href="/s4/news/update.jsp">编辑新闻</a></li>
      <li><a href="/s4/news/admin.jsp">查找新闻</a></li>
      <li><a href="/s4/news/add.jsp">添加主题</a></li>
      <li><a href="/s4news/news_login.jsp">编辑主题</a></li>
    </ul>
  </div>
    <h1> <img src="/s4/images/title_1.gif" alt="国内新闻" /> </h1>
    <div class="side_list">
      <ul>
        <li> <a href='#'><b> 重庆涉黑富豪黎强夫妇庭审答辩言辞相互矛盾 </b></a> </li>
        <li> <a href='#'><b> 发改委:4万亿投资计划不会挤占民间投资空间 </b></a> </li>
        <li> <a href='#'><b> 河南2个乡镇政绩报告内容完全一致引关注 </b></a> </li>
      </ul>
    </div>
    <h1> <img src="/s4/images/title_2.gif" alt="国际新闻" /> </h1>
    <div class="side_list">
      <ul>
        <li> <a href='#'><b> 日本首相鸠山首次全面阐述新政府外交政策 </b></a> </li>
        <li> <a href='#'><b> 黎巴嫩以色列再次交火互射炮弹 </b></a> </li>
        <li> <a href='#'><b> 伊朗将于30日前就核燃料供应方案作出答复 </b></a> </li>
        <li> <a href='#'><b> 与基地有关组织宣称对巴格达连环爆炸负责 </b></a> </li>
      </ul>
    </div>
    <h1> <img src="/s4/images/title_3.gif" alt="娱乐新闻" /> </h1>
    <div class="side_list">
      <ul>
        <li> <a href='#'><b> 施瓦辛格启动影视业回迁计划 推进加州经济复苏 </b></a> </li>
        <li> <a href='#'><b> 《沧海》导演回应观众质疑 自信能超越《亮剑》 </b></a> </li>
        <li> <a href='#'><b> 《海角七号》导演新片开机 吴宇森等出席 </b></a> </li>
        <li> <a href='#'><b> 《四大名捕》敦煌热拍 八主演飙戏火花四溅 </b></a> </li>
      </ul>
    </div>
  </div>
  <div class="main">
    <div class="class_type"> <img src="/s4/images/class_type.gif" alt="新闻中心" /> </div>
    <div class="content">
      <ul class="classlist">
        <table width="80%" align="center">
          <tr width="100%">
            <td colspan="2" align="center"><%=title %></td>
          </tr>
          <tr>
            <td colspan="2"><hr />
            </td>
          </tr>
          <tr>
            <td align="center"><%=addtime %></td>
            <td align="left"><%=author%>&nbsp;&nbsp;&nbsp; 点击量:<%=count %> </td>
          </tr>
          <tr>
            <td colspan="2" align="center"></td>
          </tr>
          <tr>
            <td colspan="2"> <%=content %></td>
          </tr>
          <tr>
            <td colspan="2"><hr />
            </td>
          </tr>
        </table>
      </ul>
      <ul class="classlist">
        <table width="80%" align="center">
         <td colspan="6">
          <%
            	while(rs.next()){
          %>
          </td>
          	<ul>
          		<li>评论内容:<%=rs.getString(5)%> </li>
          		<li>评论人:<%=rs.getString(3) %>&nbsp;&nbsp; 评论时间:<%=rs.getString(6)%>&nbsp;&nbsp;
          		<a href="dodelpl.jsp?pid=<%=rs.getInt(1)%>&nid=<%=nid %>" onclick='return clickdel()'>删除</a></li>
          	</ul>
          <%
          		}
          	}
	     	 //关闭资源
         	if(con!=null&&!con.isClosed()){
         		con.close();
         	}
         	if(ps!=null){
         		ps.close();
         	}
         	if(rs!=null){
         		rs.close();
         	}
          %>
          <tr>
            <td colspan="6"><hr />
            </td>
          </tr>
        </table>
      </ul>
      <ul class="classlist">
        <form action="dopl.jsp" method="post" onsubmit="return check()">
          <table width="80%" align="center">
            <tr>
              <td> 评 论 </td>
            
            </tr>
            <tr>
              <td> 用户名: </td>
              <td><input id="cauthor" name="cauthor" value="这家伙很懒什么也没留下"/>
                IP:
                <input name="cip" value="127.0.0.1"	readonly="readonly"/>
                <!-- 隐藏域传值 -->
				<input name="nid" type="hidden" value="<%=nid%>"/>	
              </td>
            </tr>
            <tr>
              <td colspan="2"><textarea id="ccontent" name="ccontent" cols="70" rows="10"></textarea>
              </td>
            </tr>
            
            <td><input name="submit" value="发  表" type="submit"/>
              </td>
          </table>
        </form>
      </ul>
    </div>
  </div>
</div>

将评论的内容添加到数据库中

<%
request.setCharacterEncoding("utf-8");
String nid=request.getParameter("nid");
String cip=request.getParameter("cip");
String cauthor =request.getParameter("cauthor");
String nsummary=request.getParameter("nsummary");
String ccontent=request.getParameter("ccontent");
String caddtime=new Date().toLocaleString();//取系统当前时间
/*主键:唯一且不为空 
	1.标识列:触发器+序列 
	2.取 表主键的最大序号+1
*/

String URL="jdbc:oracle:thin:@localhost:1521:orcl";
String CNAME="oracle.jdbc.driver.OracleDriver";
Class.forName(CNAME);
Connection con= DriverManager.getConnection(URL,"scott","tiger");
//定义sql语句
String sql="select nvl(max(pid),0)+1 from pl280";
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
int pid=0;//扩大作用域
if(rs.next()){
	pid=rs.getInt(1)+1;//表的最大序号+1
}

//实现增加=插入操作
 sql="insert into pl280(pid,nid,pauthor,pip,pcontent,paddtime) values(?,?,?,?,?,?)";
//执行sql语句
ps=con.prepareStatement(sql);
//给占位符赋值
ps.setInt(1, pid);
ps.setInt(2, Integer.parseInt(nid));//String-->int
ps.setString(3, cauthor);
ps.setString(4, cip);
ps.setString(5, ccontent);
ps.setString(6, caddtime);

//获得影响行数
int n=ps.executeUpdate();
//关闭资源
if(con!=null&&!con.isClosed()){
	con.close();
}
if(ps!=null){
	ps.close();
}
if(rs!=null){
	rs.close();
}
if(n>0){//说明评论成功
	//阅读主界面
	response.sendRedirect("/s4/news/read.jsp?nid="+nid+"");
}
else{//说明评论
	out.print("<script>alert('评论失败');location.href='read.jsp?nid="+nid+"';</script>");
}
%>

再从数据库中展示到界面中

   <%
     		sql="select *from pl280  where nid="+nid+" order by pid desc ";//查询当前评论的内容
          	ps=con.prepareStatement(sql);
          	rs=ps.executeQuery();
        	if(rs.next()==false){
          		%>
          		<div>暂无评论!</div></td>
          		<% 
              	}
            else{
            	while(rs.next()){
          %>
          </td>
          	<ul>
          		<li>评论内容:<%=rs.getString(5)%> </li>
          		<li>评论人:<%=rs.getString(3) %>&nbsp;&nbsp; 评论时间:<%=rs.getString(6)%>&nbsp;&nbsp;
          		<a href="dodelpl.jsp?pid=<%=rs.getInt(1)%>&nid=<%=nid %>" onclick='return clickdel()'>删除</a></li>
          	</ul>
          <%
          		}
          	}
	     	 //关闭资源
         	if(con!=null&&!con.isClosed()){
         		con.close();
         	}
         	if(ps!=null){
         		ps.close();
         	}
         	if(rs!=null){
         		rs.close();
         	}
          %>

三、include指令

a、include包含指令的作用

减少多个页面重复的代码

b、步骤:

1、新建一个页面

2、将多个页面重复要用的代码copy到新的页面中

c、运用 

<!-- include指令里面是不能用绝对路径的 -->
<%@include file="页面名" %>

 OK,以上所有就是今日学习的所有内容了,我是小陽,欢迎个位看官能观看我的文章,如果有写的不好/不足的地方欢迎大家指出来,博主会做出改变,如对各位有所帮助,不介意各位留下免费的三连哦!

下章预告:session 会话&Cookie的运用

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歐陽。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值