查询图书的功能实现

如何知道浏览器往服务器传入的参数

1、在编写好查询页面后,使用火狐浏览器的friebug (全部—>POST—>参数)
2、编写GradeListServlet,重写doGet()和doPOST()方法

服务器处理页面请求的过程

1、重写doPOST()方法。

处理过程

1、连接数据库 2、创建JSONObject对象 3、格式化数据 4、将处理后的数据以{key,value}放入到JSONObject对象中 5、响应客户端的请求

  • 获取页面请求的参数 使用方法:request.getParameter(“page/rows”);
  • 创建PageBean类 将获取来的参数传入到PageBean类进行初始化。

PageBean

package com.it.model;public class PageBean {private int page;//第几页private int rows;//每页的记录数private int start;//起始页public PageBean(int page, int rows) {super();this.page = page;this.rows = rows;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getRows() {return rows;}public void setRows(int rows) {this.rows = rows;}public int getStart() {return (page-1)*rows;}
}

创建从数据库查询出来的数据转化成JSON格式的数据

JSON将数据转化成了字符串类型的数据
转化对象后是键值对的形式 {name:value}

JSON格式转化的工具类

package com.it.util;import java.sql.ResultSet;
import java.sql.ResultSetMetaData;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;/** Json 工具包 用来处理JSon格式* 用来转化格式* JSONArray格式是 键值对形式的*/
public class JsonUtil {/*** 将数据库内的数据集转化成JSON格式的数据 输出到浏览器页面* @param rs 数据库查询返回的集合* @return * @throws Exception*/public static JSONArray formatRsToJsonArray(ResultSet rs)throws Exception{ResultSetMetaData md=rs.getMetaData();//获取纵向集合int num = md.getColumnCount();//获取ResultSetMetaData 有多少行JSONArray array=new JSONArray();//JSONArray 里的每一个对象是 JSONObjectwhile(rs.next()){ //横向的遍历JSONObject mapOfColValues=new JSONObject(); //JSONArray 里的每一个对象叫JSONObjectfor(int i=1;i<=num;i++){mapOfColValues.put(md.getColumnName(i), rs.getObject(i));//给对象赋值}array.add(mapOfColValues);}return array;//添加到JSONArray数组}
}

GradeListServlet

package com.it.web;import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;import com.it.dao.GradeDao;
import com.it.model.PageBean;
import com.it.util.Dbutil;
import com.it.util.JsonUtil;
import com.it.util.ResponseUtil;public class GradeListServlet extends HttpServlet {Dbutil dbUtil=new Dbutil();GradeDao gradeDao=new GradeDao();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String page = request.getParameter("page");//页面请求 pageString rows = request.getParameter("rows");//每页的记录数PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));Connection con=null;try{con=dbUtil.getCon();JSONObject result=new JSONObject(); //创建JSONObject对象用来存放JSONArray 数组JSONArray jsonArray = JsonUtil.formatRsToJsonArray(gradeDao.gradeList(con, pageBean));//将返回的结果集转化成JSON格式的数据//          ResultSet rs=gradeDao.gradeList(con, pageBean);
//          gradeDao.print(con, rs);int total=gradeDao.gradeCount(con);//返回统计的总行数result.put("rows", jsonArray);result.put("total", total);ResponseUtil.write(response, result);}catch(Exception e){e.printStackTrace();}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

## 数据库处理层GradeDao类 ##

package com.it.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import com.it.model.Grade;
import com.it.model.PageBean;public class GradeDao {public ResultSet gradeList(Connection con,PageBean pageBean)throws Exception{StringBuffer sb=new StringBuffer("select * from t_grade");if(pageBean!=null){sb.append(" limit "+pageBean.getStart()+","+pageBean.getRows());}PreparedStatement pstmt = con.prepareStatement(sb.toString());return pstmt.executeQuery();}public int gradeCount(Connection con)throws Exception{String sql="select count(*) as total from t_grade";// as total 是起的别名PreparedStatement psmt = con.prepareStatement(sql);ResultSet rs = psmt.executeQuery();if(rs.next()){return rs.getInt("total");}else{return 0;}}public void print(Connection con,ResultSet rs)throws Exception{while(rs.next()){Grade grade=new Grade();grade.setId(rs.getInt("id"));grade.setGradeName(rs.getString("gradeName"));grade.setGradeDesc(rs.getString("gradeDesc"));System.out.println(grade);}}
}

响应页面的工具类

package com.it.util;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject;public class ResponseUtil {public static void write(HttpServletResponse response,JSONObject jsonObject)throws Exception{response.setContentType("text/html;charaset=UTF-8");response.setCharacterEncoding("UTF-8");//解决无法输出中文的问题PrintWriter out = response.getWriter();out.println(jsonObject.toString());out.flush();out.close();}}

JavaWeb项目第三次总结_成绩查询的实现相关推荐

  1. java成绩查询_JavaWeb项目第三次总结_成绩查询的实现

    查询图书的功能实现 如何知道浏览器往服务器传入的参数 1.在编写好查询页面后,使用火狐浏览器的friebug (全部->POST->参数) 2.编写GradeListServlet,重写d ...

  2. 天猫整站SSM项目(三)后台demo---数据查询(一)

    天猫整站SSM项目(三)后台demo---数据查询(一 一.分类查询页面包含的jsp文件 二.查询功能的实现 到这里就开始讲解功能开发了. 开发整站的顺序,通常来说还是按照依赖性来进行,前端需要的数据 ...

  3. java成绩查询_成绩查询系统(JAVA)

    import java.awt.*; import java.awt.event.*; import java.net.*; import java.sql.*; class Window exten ...

  4. 新锐房地产销售管理系统(部分流程)技术解释(三)销售管理_房源查询

    1.查询房源 房源查询这个模块,可以根据 所选择的项目和楼栋来把房源的信息查询出来,具体体现如下.右边显示的是这个房源的具体信息,销售信息是某一个房源的重要操作记录(例如预定.预留之类的记录).主界面 ...

  5. 2021年甘肃省三职生高考成绩查询,2021年甘肃省高考分数公布时间

    [前言]2021年甘肃省高考分数公布时间为好范文网的会员投稿推荐,但愿对你的学习工作带来帮助. 高考已经结束了,相信同学们都非常期待高考成绩,然后进入理想的大学,那么你知道高考成绩的公布时间了吗?小编 ...

  6. 忙里偷闲第三弹:开发成绩查询微信公众号

    1.先上个图 2.具体的实现步骤就不写了,慕课网上有基础教程,这个项目的源代码可以在我的github查看,还有一些bug未解决.https://github.com/Vito-Yan/WeiXinMY ...

  7. 2021年四川高考成绩在哪里查询,2021年四川高考成绩查询系统入口,四川高考成绩怎么近查询系统...

    本文小编大家整理了关于四川高考成绩查询系统入口的相关知识,供大家在成绩公布之时快速的查询自己的成绩. 一.2021年四川高考成绩查询系统入口 2021年四川高考成绩查询系统入口,考生可以登录四川招生考 ...

  8. 2021杨雪洋高考成绩查询,十万火急!多省已开通2020高考成绩查询通道(附各省最新查询网址)...

    高考结束后,高考出分和志愿填报是重中之重!目前,福建.黑龙江.广东三个省市高考成绩查询系统已经开通,查分估计也就是一两天的事. 105411het0gyumtzuptv0z.jpg (59 KB, 下 ...

  9. 怎样查询2021年青海高考成绩,2021年青海高考成绩查询系统入口,青海高考成绩怎么近查询系统...

    本文小编大家整理了关于青海高考成绩查询系统入口的相关知识,供大家在成绩公布之时快速的查询自己的成绩. 一.2021年青海高考成绩查询系统入口 2021年青海高考成绩查询系统入口,考生可以登录青海招生考 ...

最新文章

  1. 北大文科生能选计算机专业么,文科计算机基础和文科计算机专题
  2. ChatForFun 公众号使用说明
  3. PyCharm安装及配置
  4. spring 集成 Hibernate4.3.X org.hibernate.service.jta.platform.spi.JtaPlatform异常
  5. docker多个mysql实例_Docker创建运行多个mysql容器的方法示例
  6. 吴恩达的机器学习,属实牛逼
  7. C++ 高性能服务器网络框架设计细节
  8. 三菱plc控制步进电机实例_「PLC案例」三菱FX3U与威纶通HMI的步进定位控制,附程序图~...
  9. c++win32项目 如何显示后再删除一个绘图_如何运用Excel,R等软件结合PPT做出你想要的矢量图...
  10. Python常见实体提取库Duckling,多语言,实体如日期、金额、距离
  11. 辅导作业很“崩溃”?猿辅导教你三招告别怒吼式教育
  12. PID控制算法原理通俗讲解
  13. 35岁之后软件测试工程师靠什么养家?我还能继续做测试。
  14. Ubantu下安装Chrome64位
  15. 富士康和苹果都后悔了,将制造重心转回国内,上演高速路口抢人
  16. 【实战】物联网安防监控项目———需求分析
  17. php mysql自动定时备份_php中实现mysql数据库备份与linux自动定时备份代码
  18. 瑞利信道下基于判决反馈的16QAM信道均衡(matlab源码)
  19. ISO制定的语言,文字标准(zh en)
  20. 郑清 - 日常作息表(2020-02)

热门文章

  1. linux系统目录树/内核源码目录树
  2. OpenC 仿射变换
  3. [SDOI2017]天才黑客
  4. 一个在raw里面放着数据库文件的网上例子
  5. D3.js、HTML5、canvas 开发专题
  6. codevs 1203 判断浮点数是否相等
  7. MySQL查询随机数据的4种方法和性能对比
  8. Ext学习-前后交互模式介绍
  9. 博客园HTML源码运行特制js(原创自Zjmainstay)
  10. Javascript原型链