文档版本 | 开发工具 | 测试平台 | 工程名字 | 日期 | 作者 | 备注 |
---|---|---|---|---|---|---|
V1.0 | 2016.05.18 | lutianfei | none |
问题:id是varchar类型,它的获取问题?
完成添加操作:
2.创建add.jsp
My97DataPicker
My97DataPicker
文件夹复制到项目根目录WebRoot
下 <script language="javascript" type="text/javascript" src="${pageContext.request.contextPath}/My97DatePicker/WdatePicker.js"></script>
<input type="text" name="birthday" class="Wdate" onclick="WdatePicker()" readonly="readonly"><br>
WdataPicker.js
文件,改变初始显示时间。 startData
后面按照格式填入初始时间3.创建CustomerAddServlet完成添加操作
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<cks.length;i++){
cks[i].checked=flag;
}
}
2.完成批量删除
注<a href="javascript:void(0)" onclick="sendDel();">
:
href
选中的连接失效并跳转到javascript中的sendDel()
函数。 <div align="center">
<form>
<select name="s">
<option>请选择条件</option>
<option value="name">按姓名查询</option>
<option value="cellphone">按手机号查询</option>
<option value="description">按描述查询</option>
</select>
<input type="text" name="msg">
<input type="submit" value="查询">
</form>
</div>
问题: select的名称叫什么?每一个option的值是什么?
2 . 创建CustomerSimpleSelectServlet完成条件查询
String sql="select * from customer where "+field+" like ?";
?
就相当于加了单引号‘’
1.物理分页
2.逻辑分页
在java开发领域,我们使用的比较多的是物理分页。
limit
top
rownum
select * from 表 limit m,n;
m
:代表的是从第几条开始 注意:它是从0开始记录.n
:代表查询几条记录.select * from 表 limit (页码-1)*每页条数,每页条数;
select count(*) from 表
总页数=Math.ceil(总条数*1.0/每页条数);
select * from 表 limit (页码-1)*每页条数,每页条数;
1.在success.jsp页面上
<a href="${pageContext.request.contextPath}/findAllByPage">查看所有客户信息(分页展示)</a><br>
2.创建CustomerFindAllByPageServlet完成分页
private int pageNum; // 页码
private int currentPage; // 每页条数
private int totalPage; // 总页数
private int totalCount; // 总条数
private List<Customer> cs; // 每页数据
<a href="/day20_1/findAllByPage?pageNum=1">首页</a>
<a href="/day20_1/findAllByPage?pageNum=${pb.pageNum-1}">上一页</a>
<a href="/day20_1/findAllByPage?pageNum=${pb.pageNum+1 }">下一页</a>
<a href="/day20_1/findAllByPage?pageNum=${pb.totalPage }">尾页</a>
* 在CustomerFindAllByPageServlet中处理请求参数 pageNum
int pageNum = 1;
String _pageNum = request.getParameter("pageNum");
if (_pageNum != null) {
pageNum = Integer.parseInt(_pageNum);
}
<c:if test="${pb.pageNum==1}">
上一页
</c:if>
<c:if test="${pb.pageNum!=1}">
<a href="/day20_1/findAllByPage?pageNum=${pb.pageNum-1}">上一页</a>
</c:if>
<c:if test="${pb.pageNum==pb.totalPage}">
下一页
</c:if>
<c:if test="${pb.pageNum!=pb.totalPage}">
<a href="/day20_1/findAllByPage?pageNum=${pb.pageNum+1 }">下一页</a>
</c:if>
<select>
<select name="currentPage" onchange="changeCurrentPage(this.value);">
<option>--请选择每页条数--</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
function changeCurrentPage(value){
location.href="/day20_1/findAllByPage?currentPage="+value;
};
* 2.在首页,上一页,下一页,尾页的连接上也要添加每页显示条数。
* `<a href="/day20_1/findAllByPage?pageNum=1¤tPage=${pb.currentPage}">首页</a>`
<c:forEach begin="1" end="${pb.totalPage}" var="n" step="1">
<a href="/day20_1/findAllByPage?pageNum=${n}¤tPage=${pb.currentPage}">第${n}页</a>
</c:forEach>
<c:if>
代码太乱。监听事件的发生需要如下因素:
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
在javaweb中有什么监听器,有什么作用?
1.监听创建与销毁
ServletRequestListener
可以监听request对象的创建与销毁。HttpSessionListener
可以监听session对象的创建与销毁。ServletContextListener
可以监听application
对象的创建与销毁。2.监听web对象的属性变化
ServletRequestAttributeListener
监听request对象的属性变化HttpSessionAttributeListener
监听session对象的属性变化ServletContextAttributeListener
监听application对象的属性变化。<listener>
标签配置好监听器,web容器就会自动把监听器注册到事件源中。web.xml
文件中可以配置多个 Servlet 事件监听器,web 服务器按照它们在 web.xml 文件中的注册顺序来加载和注册这些 Serlvet 事件监听器。web.xml
文件中配置注册监听。 <!-- 监听器案例-->
<listener>
<listener-class>cn.itcast.listener.demo.MyServletContextListener</listener-class>
</listener>
1.监听application对象的创建与销毁.
2.监听session对象创建与销毁
reqeust.getSession();
它是用于获取session setMaxInactiveInterval(int interval)
ServletContextListener
接口用于监听 ServletContext
对象的创建和销毁事件。contextInitialized
(ServletContextEvent sce)方法contextDestroyed
(ServletContextEvent sce)方法。提问,servletContext域对象何时创建和销毁:
示例1 简单任务调度Timer与TimerTask使用
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSession 和 ServletRequest 这三个域对象。
Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。
在javaweb中servlet规范中定义了三种技术 : servlet
Listener
Filter
。
HttpSessionListener接口
用于监听 HttpSession
的创建和销毁 sessionCreated
(HttpSessionEvent se) 方法将会被调用。sessionDestroyed
(HttpSessionEvent se) 方法将会被调用。ServletRequestListener 接口
用于监听 ServletRequest
对象的创建和销毁。
requestInitialized方法
将会被调用。requestDestroyed方法
将会被调用。当向被监听器对象中增加一个属性时,web容器就调用事件监听器的 attributeAdded 方法进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象。
ServletContext
, HttpSession
, HttpServletRequest
这三个对象中的属性变更信息事件的监听器。ServletContextAttributeListener
, HttpSessionAttributeListener
ServletRequestAttributeListener
attributeAdded 方法
进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象各个域属性监听器中的完整语法定义为:
当删除被监听对象中的一个属性时,web 容器调用事件监听器的这个方法进行相应处理
各个域属性监听器中的完整语法定义为:
当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的这个方法进行相应处理
public class MySessionAttributeListener implements HttpSessionAttributeListener {
public void attributeAdded(HttpSessionBindingEvent arg0) {
// arg0.getSession(); 获取事件源,也就是获取session对象.
System.out.println(arg0.getName());
System.out.println(arg0.getValue());
System.out.println("向session中添加属性");
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("从session中移除属性");
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("将session中的属性修改");
}
}
问题:在监听器中是否可以得到属性值?
思考一个问题:这些监听器在开发中有什么用?
功能:扫描session对象在指定时间内没有使用,人为销毁。
分析:
getLastAccessedTime()
)Timer
完成完成定时扫描session,如果超时没有使用,销毁案例:
保存在Session域中的对象可以有多种状态:
钝化
);活化
);Servlet 规范中定义了两个特殊的监听器接口来帮助JavaBean
对象了解自己在 Session域中的这些状态。
HttpSessionBindingListener接口
HttpSessionActivationListener接口
web.xml
文件中进行注册实现了HttpSessionBindingListener接口的 JavaBean 对象可以感知自己被绑定到 Session 中和从 Session中删除的事件
void valueBound(HttpSessionBindingEvent event)
方法void valueUnbound(HttpSessionBindingEvent event)
方法实现了HttpSessionActivationListener
接口的 JavaBean对象可以感知自己被活化和钝化的事件
sessionWillPassivate(HttpSessionBindingEvent event)
方法void sessionDidActive(HttpSessionBindingEvent event)
方法钝化
—>将session中的javaBean保存到文件中.活化
—>从文件中将javaBean直接获取。需要创建一个配置文件context.xml
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="it315"/>
</Manager>
</Context>