项目实例-页面

发布于:2025-08-14 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、页面

二、前端content页面

1.前端js页面

//加载栏目
//ajax()异步         同步
$.ajax({
    url:"SearchChannel",
    type:"get",
    //ajax请求是异步的,他只管发起,还需要同步接收
    async:false,//变为同步
    //连接的返回值返回到了value
    success: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 页码不可能等于0
                if(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=1
    loadData()
    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=1
    loadData()
    //样式切换 first方法是jquery的方法
    $(".item").removeClass("current").first().addClass("current")
    
})

//尾页切换
$(".page").on("click",".last",function(){
    //数据切换
    page=$(".item").length
    loadData()
    //样式切换
    $(".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 stub
		doGet(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);
		//设置后端给前端返回信息为json
		response.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);
		//设置后端给前端返回信息为json
		response.setContentType("text/json;charset=utf-8");
		//返回数据,都是以字符串形式传参
		response.getWriter().write(res);
	
	}

三、sql数据库

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


网站公告

今日签到

点亮在社区的每一天
去签到