发表于: 2017-10-07 23:41:07
1 824
今天完成的事情:
1.任务二的深度思考
2.监听session的数量。
明天计划的事情
1.监听session的数量,仔细了解每一行代码的意思
2.事物管理器
遇到的问题:
2. 提交账户密码问题:
这样可以获取到前台传来的用户名密码,但是没有对应的东西怎么穿?
<!--登录-->
<div class="web_login" id="web_login">
<div class="login-box">
<div class="login_form">
<form action="/a/login/validate" name="loginform" accept-charset="utf-8" id="login_form" class="loginForm"
method="post">
<input type="hidden" name="did" value="0"/>
<input type="hidden" name="to" value="log"/>
<div class="uinArea" id="uinArea">
<label class="input-tips" for="u">帐号:</label>
<div class="inputOuter" id="uArea">
<input type="text" id="u" name="username" class="inputstyle"/>
</div>
</div>
<div class="pwdArea" id="pwdArea">
<label class="input-tips" for="p">密码:</label>
<div class="inputOuter" id="pArea">
<input type="password" id="p" name="password" class="inputstyle"/>
</div>
</div>
<div style="padding-left:50px;margin-top:20px;"><input type="submit" value="登 录" style="width:150px;" class="button_blue"/></div>
</form>
</div>
</div>
</div>
<!--登录end-->
</div>
收获:
1.任务二的深度思考14(东西好多啊)
有个别还没能理解,还要看一看。
第三部分HTTP响应内容就是HTTP请求所请求的信息。这个信息可以是一个HTML,也可以是一个图片。


- No Referrer:任何情况下都不发送 Referrer 信息;
- No Referrer When Downgrade:仅当发生协议降级(如 HTTPS 页面引入 HTTP 资源,从 HTTPS 页面跳到 HTTP 等)时不发送 Referrer 信息。这个规则是现在大部分浏览器默认所采用的;
- Origin Only:发送只包含 host 部分的 Referrer。启用这个规则,无论是否发生协议降级,无论是本站链接还是站外链接,都会发送 Referrer 信息,但是只包含协议 + host 部分(不包含具体的路径及参数等信息);
- Origin When Cross-origin:仅在发生跨域访问时发送只包含 host 的 Referrer,同域下还是完整的。它与 Origin Only 的区别是多判断了是否 Cross-origin。需要注意的是协议、域名和端口都一致,才会被浏览器认为是同域;
- Unsafe URL:无论是否发生协议降级,无论是本站链接还是站外链接,统统都发送 Referrer 信息。正如其名,这是最宽松而最不安全的策略
2.监听session的数量。
还没有测试,明天测一下,代码只理解了一般
/**
* Created by Administrator on 2017-10-07.
* 当网站用户量增加时,session占用的内存会越来越大,这时session的管理,将会是一项很大的
* 系统开销,为了高效的管理session,我们可以写一个监听器,定期清理掉过期的session
*/
public class SessionScanerListener implements HttpSessionListener {
private static Logger loggerSSL = Logger.getLogger(SessionListener.class);
// 创建一个线程安全的集合,来存储session
@SuppressWarnings("unchecked")
//LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.
// Collections.synchronizedList() 详情:http://www.cnblogs.com/yaowen/p/5983136.html
private List<HttpSession> sessionList = Collections.synchronizedList(new LinkedList<HttpSession>());
private Object lock = new Object();
public void sessionCreated(HttpSessionEvent httpSessionEvent){
loggerSSL.info("session创建成功");
HttpSession httpSession = httpSessionEvent.getSession();
loggerSSL.info("httpSession" + httpSession);
/**
* synchronized有两种用法,(this)一种是在方法定义时使用,多线程状态下,这个方法只能同时被同一个线程执行;
* (lock)另一种就是你问到的这种情况,用于锁定代码段,也就是说,{ }括号中的代码是不会同时被多个线程执行,而是排队执行。
*
* synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:
1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
4. 修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。
*/
synchronized (lock){
sessionList.add(httpSession);
}
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
System.out.println("session 销毁成功...");
}
// web应用关闭时触发contextDestroyed事件
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("web应用关闭...");
}
// web应用启动时触发contextInitialized事件
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("web应用初始化...");
// 创建定时器
Timer timer = new Timer();
// 每隔30秒就定时执行任务
timer.schedule(new MyTask(sessionList,lock), 0, 1000*30);
}
进度:
任务开始时间:8.14
预计完成时间:10.8
是否有延期风险:监听器还没有完成、事务管理器
禅道:http://task.ptteng.com/zentao/project-task-264.html
PS:监听器还有一个监听session的。
评论