笔记--分页与listener

本文探讨了主键为varchar类型时如何确保其唯一性,并介绍了使用UUID的方法。此外,还详细讲解了页面全选操作的实现,以及通过SQL语句实现分页查询的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
*主键id如果是varchar类型时,怎样保证唯一?
	*使用UUID工具类来完成
*完成页面上全选 与全不选操作
	function change()
	{
		//1.得到id为main的这个checkbox
		var main=document.getElementById("main");
		var flag=main.checked;
		//2.得到所有name=ck的checkbox
		var cks=document.getElementsByName("ck");
		//3.将cks中所有的checkbox的checked值设置为flag
		for(var i=0;i
 
				
  
*问题: select的名称叫什么?每一个option的值是什么? select可以任意起名. option的value名称需要与customer表中的字段名称对应. 因为在后端使用request.getParameter("select的名字")获取到的值就是选中的详细的值 *创建CustomerSimpleSelectServlet完成条件查询 *注意sql语句问题: String sql="select * from customer where "+field+" like ?"; 字段名称不能使用占位符,再去添加参数, 因为只要是占位符的地方,就会默认用''引起来,而字段名在sql语句中是不能使用单引号引起来的。 所以,在拼接sql语句的时候要注意 *分页: *将数据以多页的形式去展示,使用分页可以提高客户的感受 *分类 *物理分页:在sql查询时,只从数据库中查询出当前页的数据 *优:不占用太多内存 *缺:效率较低 java开发领域一般使用物理分页,因为java一般用于处理大数据的 *实现: *直接使用jdbc完成 *使用滚动结果集 *优:跨数据库 *缺:性能低 *使用数据库本身提供的分页操作 *使用每一个数据库特定的分页函数 *优:性能高 *缺:不跨数据库 mysql:limit sqlserver:top oracle:rownum *逻辑分页:在sql查询时,将所有数据查询出来,存储到内存中, 要想展示当前页数据,直接从内存中获取 *优:效率高 *缺:占用内存高 *使用数据库本身提供的分页操作 *limit select * from 表名 limit m,n; m:代表从第几条记录开始,(下标从0开始) n:代表查询的记录数 eg:分页查询,每页显示6条,要查询第5页的数据 select * from 表名 limit (5-1)*6,6; select * from 表名 limit (页码-1)*没页条数,每页条数; *设定每页显示条数 *在showCustomerByPage.jsp页面上添加一个
  • function changeCurrentPage(value) { location.href="/day20_1/findAllByPage?currentPage="+value; }; *只做上面的操作,点击上一页等曹组之后,显示的条数又变回选择前了?怎样解决呢? *其实就是在首页,上一页,下一页,尾页的连接上把每页显示条数作为参数传会后端进行处理 例如: 首页 *页码显示: * // 从1开始 到总页数 当前页数 每次增加1 ${n}   *此处的页码显示,也做和之前选上下一页一样的操作,用jstl标签判断一下,如果显示到当前页 就把当前的页码变成其他颜色或者变成非超链接标签 *页码数较多的时候,限定页码数。 但是在jsp页面代码很麻烦,就使用自定义标签来完成 但是,我觉得自定义标签更麻烦,哈哈哈。。。。。 *Listener监听器 *事件 ActionEvent *事件源 JButton *监听器 ActionListener *注册监听 addActionListener *监听器:可以监听某一个事物在执行特定操作时,可以触发另一个操作 可以在满足特定的条件下执行一段操作 *Javaweb中有什么监听器? *javaweb中的servlet规范中,定义了三种技术:servlet,listener,filter *作用:监听web对象(request[HttpServletRequest],session[HttpSession],application[ServletContext])的三种操作 *对此的创建与销毁 *HttpServletRequest 对应监听器 ServletRequestListener *HttpSession 对应监听器 HttpSessionListener *ServletContext 对应监听器 ServletContextListener *application对象什么时候创建,什么时候销毁 *服务器启动时创建,服务器关闭时销毁 *session对象什么时候创建,什么时候销毁 *创建 *request.getSession():用于获取session,是否创建分以下几种情况: *如果请求中没有sessionid,那么就创建session *如果请求头中有sessionid, *如果在服务器端,有一个sessionid与其相同,则直接使用,不创建 *如果在服务器端没有这个sessionid,则创建 *销毁 *默认超时,30分钟 *设置session超时时间 setMaxInactiveInterval(int interval) *invalidate()手动销毁 *关闭服务器 *request对象什么时候创建,什么时候销毁 *创建:请求发生时 *销毁:响应产生时 *对象属性的变化 *HttpServletRequest 对应监听器 ServletRequestAttributeListener *HttpSession 对应监听器 HttpSessionAttributeListener *ServletContext 对应监听器 ServletContextAttributeListener *在监听器中是否可以获取属性的值呢? *常识:在java监听机制中,是可以获取事件源的 *ActionEvent.getSource()可以获取事件源 *在Javaweb中也一样,事件对象可以直接获取事件源 在开发中如果用到了时间触发机制,一般情况下,都可以使用方法的参数来获取想要的信息 *监听器的作用:主流开发中一般不用,监听器一般用于统计性能等信息 *session绑定javabean *HttpSessionBindingListener *这个监听器可以让javabean对象,感知它被绑定到session中或从session中移除 *HttpSessionActivationListener *这个监听器可以让javabean感知,被钝化或活化 *钝化:将session中的javabean保存到文件中 *活化:从文件中将javabean直接获取 *需要创建一个配置文件 context.xml *文件防止在META-INF目录下 *这两个监听器的特点 *有javabean实现 *不需要在web.xml中配置 **javabean还有一个特点:必须序列化,实现serializable接口。恩,上次遇到这个问题了,实现这个接口就好了,但是忘了问题是啥子了。。。 *创建监听器的步骤 *创建一个类实现指定的监听器 *重写接口中的方法 *在web.xml文件中配置注册监听 监听器类对象的全类名 *案例:扫描程序中的session,如果session在指定时间内没有使用,则对其进行人为销毁,为了释放内存 *怎样标识session多长时间没有使用呢? 当前时间-最后使用的时间(getLastAccessedTime()) *什么时候开始扫描,扫描多长时间 *Timer *步骤: *得到所有session,存入集合中 *一个程序中的session,应该全部存在于一个集合中,所以集合应该是在程序启动时创建一个 所以集合对象应该在程序一启动时就创建在servletContext对象中,所以就在对应的监听器中,对象建立时,创建一个集合存入域中 *定时扫描:时间到了,不仅仅是销毁session,还要从集合中移除session *操作集合时,因为代码是多线程的,考虑到线程安全问题,使用Collections.synchronizedList(new ArrayList<>()); 变成一个线程安全的集合 遍历集合时,考虑到并发的问题,也应该使用迭代器使得线程安全 */
  • 监听器了解,真正开发用不到,但是也要知道。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值