当前位置: 首页 > news >正文

项目实例-页面

一、页面

二、前端content页面

1.前端js页面

//加载栏目
//ajax()异步         同步
$.ajax({url:"SearchChannel",type:"get",//ajax请求是异步的,他只管发起,还需要同步接收async:false,//变为同步//连接的返回值返回到了valuesuccess:function(value){/* var arr = value.data$(".channelid").empty()$(".channelid").append('<option value="0">全部</option>')for(var i=0;i<arr.length;i++){$(".channelid").append('<option value="'+arr[i].id+'">'+arr[i].channelname+'</option>')}*/},error:function(){alert("出错啦")}
})var page = 1//默认一进入页面显示的是第一页
var pageSize = 6//默认每页显示的条目为六条//加载数据,动态获取参数,以后不用随时变了
var loadData = function(){//获取输入框数据.channelid表示获取class的值var channelid = $(".channelid").val()//没有数字不用加空格var title = $(".title").val().trim()var author = $(".author").val().trim()$.ajax({url:"SearchContent",type:"get",data:{channelid,title,author,page,pageSize},//主体内容success:function(value){var arr = value.data//清空tbody内容,固定的不动的tobody$("tbody").empty()for(var i=0;i<arr.length;i++){//jquery增加方法,有多少条追加多少行 arr[i].id字符串拼接,createtime.substring(0,10)字符串裁剪,从0到10,要0不要10,不要分钟秒$("tbody").append('<tr>+'+'<td><input type="checkbox"></td>'+'<td>'+arr[i].id+'</td>'+'<td>'+arr[i].channelname+'</td>'+'<td>'+arr[i].title+'</td>'+'<td>'+arr[i].author+'</td>'+'<td><img src="img/bg01warp.png" alt=""></td>'+'<td>'+'<input type="button" value="修改" class="update">'+'<input type="button" value="删除" class="delete">'+'</td>'+'</tr>')}},error:function(){alert("出错啦")}})
}
//加载页码
var loadPage = function(){//获取输入框数据var channelid = $(".channelid").val()var title = $(".title").val().trim()var author = $(".author").val().trim()$.ajax({url:"GetCount",type:"get",data:{channelid,title,author},//把页码数变成动态的,可以实时更新的success:function(value){//在这对页码那一行写html,让他是动态的,原来的html页注掉var count = Math.ceil(value/pageSize)$(".page").empty()$(".page").append("<li class='first'>首页</li>")$(".page").append("<li class='prev'>上一页</li>")for(var i=0;i<count;i++){//i=0 页码不可能等于0if(i==0){//谁有current谁就有样式$(".page").append("<li class='current item'>"+(i+1)+"</li>")}else{$(".page").append("<li class='item'>"+(i+1)+"</li>")}}$(".page").append("<li class='next'>下一页</li>")$(".page").append("<li class='last'>尾页</li>")}})}//前面引函数,后面需要调函数 
//进入页面加载数据
loadData()
//进入页面加载页码
loadPage()//点击按钮搜索
$(".search").click(function(){page=1loadData()loadPage()
})//任意页码切换,可以从第一页切换到第三第四页,看看知识点,怎么绑事件
$(".page").on("click",".item",function(){//数据切换$(this)当前被点击元素,获取当前被点击元素的信息page=$(this).text() loadData()//样式切换,页码要变绿//点谁给谁添加class值$(this).addClass("current")//siblings()当前被点击的兄弟元素去掉效果$(this).siblings().removeClass("current")
})//首页切换
$(".page").on("click",".first",function(){//数据切换page=1loadData()//样式切换 first方法是jquery的方法$(".item").removeClass("current").first().addClass("current")})//尾页切换
$(".page").on("click",".last",function(){//数据切换page=$(".item").lengthloadData()//样式切换$(".item").removeClass("current").last().addClass("current")})
//上一页切换
$(".page").on("click",".prev",function(){if(page==1){alert("已经是第一页了")return}//数据切换page--loadData()//样式切换$(".item").removeClass("current").eq(page-1).addClass("current")})
//下一页切换
$(".page").on("click",".next",function(){if(page==$(".item").length){alert("已经是最后一页了")return}//数据切换page++loadData()//样式切换$(".item").removeClass("current").eq(page-1).addClass("current")})

二、后端查找

1.getcount获取数据表,主体部分获取参数,转成字符串形式给前端

package com.qcby.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.qcby.db.MysqlUtil;/*** Servlet implementation class GetCount*/
@WebServlet("/GetCount")
public class GetCount extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public GetCount() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取前端传递的参数String channelid = request.getParameter("channelid");String title = request.getParameter("title");String author = request.getParameter("author");// 构建查询总记录数的SQL语句,表名已修改为channelcontent和channelname
String sql = "select count(*) from channelcontent, channelname where channelcontent.channelid = channelname.id ";// 根据参数动态拼接SQL条件if(channelid != null && !channelid.equals("0")) {sql += " and channelcontent.channelid = " + channelid;}if(title != null && !title.equals("")) {sql += " and channelcontent.title like \"%" + title + "%\"";}if(author != null && !author.equals("")) {sql += " and channelcontent.author = \"" + author + "\"";}// 调用工具类执行查询,获取总记录数int num = MysqlUtil.getCount(sql);// 将结果转换为字符串并响应给前端String res = String.valueOf(num);response.getWriter().write(res);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

2.searchchannel表(单表查找)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//栏目查找只需要单表String sql = "select * from channel";String[] colums = {"id","channelname"};//参数设置成字符串形式String res = MysqlUtil.getJsonBySql(sql, colums);//设置后端给前端返回信息为jsonresponse.setContentType("text/json;charset=utf-8");//返回数据response.getWriter().write(res);}

3.searchcontent表(双表连接)

1.content表

根据请求参数动态构建SQL查询语句,从数据库中获取数据,并将数据以JSON格式返回给前端。

2.后端接收参数

3.对参数做处理并返回

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//接收参数String channelid = request.getParameter("channelid");String title = request.getParameter("title");String author = request.getParameter("author");String page = request.getParameter("page");String pageSize = request.getParameter("pageSize");String sql = "select content.*,channelname from content,channel where content.channelid = channel.id ";//channelid连接内容和栏目的四部分if(channelid!=null&&!channelid.equals("0")) {sql+="	and channelid = "+channelid;}//title自动搜索if(title!=null&&!title.equals("")) {sql+="  and title like \"%"+title+"%\"";}//author自动搜索if(author!=null&&!author.equals("")) {sql+=" and author=\""+author+"\"";}//createtime降序排列,时间最近放在最前面,每一页都保持降序排列sql+=" order by createtime desc  limit "//计算分页的起始序号要到第几个了,还要考虑到一页只能容纳四个//Integer.parseInt把字符串转成int类型数据,int类型才可以做加减乘除运算+(Integer.parseInt(page)-1)*Integer.parseInt(pageSize)+","+pageSize;//参数设置字符串形式String[] colums = {"id","title","createtime","author","imgurl","content","channelid","channelname"};String res = MysqlUtil.getJsonBySql(sql, colums);//执行SQL查询并将结果转换为JSON格式。强制类型转换,传参需要int类型数据System.out.println(res);//设置后端给前端返回信息为jsonresponse.setContentType("text/json;charset=utf-8");//返回数据,都是以字符串形式传参response.getWriter().write(res);}

三、sql数据库

做到无论输入什么,只要有坐着,标题就可以筛选对应的条件并进行搜索。

http://www.dtcms.com/a/327703.html

相关文章:

  • 股票智能体系统的设计与开发
  • VisualSVN Server 4.2.1 安装教程 - 64位下载与配置步骤详解
  • 【Docker项目实战】使用Docker部署Vikunja任务管理工具
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day2
  • 嵌入式 - Linux软件编程:文件IO
  • 零售业CRM实战:如何打通线上线下客户数据?
  • Ansible 基本使用
  • UE官方文档学习 C++ TAarry 查询(三)Contain,Find函数的使用
  • Redis--day4--实战-黑马点评--搭建环境
  • WPS JS宏 通用方法整理汇总 实时更新
  • 【Vue 3 响应式系统深度解析:reactive vs ref 全面对比】
  • MySQL(下)
  • C语言入门完结篇_结构体、枚举、时间函数的、变量类型(C语言划分内存各个区块的方法)、文件操作
  • MyBatis 缓存与 Spring 事务相关笔记
  • Spring-Cache 缓存数据
  • damn the jvm again(2)
  • 编程模型设计空间的决策思路
  • 什么是跨域访问问题,如何解决?
  • Windows怎样配置动态磁盘
  • [SC]SystemC中的SC_FORK和SC_JOIN用法详细介绍
  • android端自定义通话通知
  • VUE的8个生命周期
  • Orange的运维学习日记--41.Ansible基础入门
  • sqli-labs通关笔记-第44关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入3种方法)
  • demo 英雄热度榜 (条件筛选—高亮切换—列表渲染—日期显示)
  • Full GC 频率优化实战
  • RGWRados::get_obj_state_impl()
  • 25C机场航班调度程序(JS 100)
  • 【智能硬件】2025年儿童智能手表革命:守护隐私的科技堡垒
  • AQS的理解