发表于: 2017-11-22 16:22:22

1 701


今天完成的事

【servlet的生命周期】

void init(ServletConfig config):初始化

* 初始化方法

* 执行者:服务器

* 执行次数:一次

* 执行时机:默认第一次访问的时候

void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑

* 服务

* 执行者:服务器

* 执行次数:请求一次执行一次

* 执行时机:请求来的时候

void destroy():销毁

* 销毁

* 执行者:服务器

* 执行次数:只执行一次

* 执行时机:当servlet被移除的时候或者服务器正常关闭的时候

 

serlvet是单实例多线程

默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作.并调用一次service方法

每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑

当serlvet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy方法实现销毁操作


【MD5 的不可逆性】

师兄问这个问题的时候脑癌了。

其实一定是不可逆的。。

因为可逆代表着一一映射。。。但是MD5的范围是32个16进制的数。。。

只要长度超过16位的字符串,变数就超过MD5的范围了。。


看见一位知乎大神的表述更形象。数据哈希之后就变成浆糊了,你能把浆糊变成馍馍吗

【做一个拦截成功的页面】

其实就做一个跳转。这里用一些昨天学到的知识。

跳转和重定向哪里不一样


我先用重定向来完成这件事。

这是一个跳转语句。拦截成功之后跳转到登陆页面。

会是这样的。

注意,跳转过程相当于response.sendRedirect(url)跳转到指定的URL地址,产生一个新的request

redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器。


我再用跳转完成这件事。



会发现。域名没有变。

其实不止域名没有变。

forword换到登陆页面这件事,浏览器都是不知情的。

用来传递request的,可以一个Servlet接收request请求,另一个Servlet用这个request请求来产生response。request传递的请求,response是客户端返回的信息



【做一个登出的操作】

其实就是一个清楚cookies的操作。。

还挺简单的。。

改一下前端页面



@RequestMapping(value = "/logout" ,method =RequestMethod.GET)
public String logOut(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse){

Cookie cookie = new Cookie("Token",null);
   cookie.setMaxAge(0);
   cookie.setPath("/");
   httpServletResponse.addCookie(cookie);
   System.out.println("登出清空cookies");
   return "12";

 

 【修复一个task2任务中的乱码问题】


首先要排查是哪里的错误导致乱码了。

我打了无数个日志。(才追到出问题的地方)


数据都是正常的,但是进入数据库的一刹那。

就已经变成乱码了。

那么就是数据的问题。

经百度。

默认的数据库编码有问题。

解决的办法,要么改数据库默认编码。

要么在数据库链接后面加

?useUnicode=true&characterEncoding=UTF-8 

。更新搞定。


有个感想就是,如果你做任务的时候遇到一个恶心的问题。

你放在那里让它冷静一下。

过了一阵你回头看。可能简单很多。。。


【开始任务六】

这个JMeter的启动方式也是挺非主流的。

为啥不能直接建一个exe...

摸清了一下页面。

添加被测页面

右击“线程组” > “添加” > “Sampler” > “HTTP请求”。

这是我自己的程序~

但是跑完之后我都不知道测没测就结束了,一脸懵逼。

查了一下,主要还是看日志。

选项” > “Log Viewer”看看运行的日志。

看到一个文档介绍了一个更牛逼的展示。。。。

然后

什么头信息体信息都有~

是不是很秀!!

最简单的JMeter的性能测试~

睡觉~

明天起来接着搞~


收获

【一个前端的知识点?(也和后端沾点边)】

 jsp的4个作用域 pageScope、requestScope、sessionScope、applicationScope的区别

1.page指当前页面有效。在一个jsp页面里有效

2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。

3.Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中 

4.application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用 

总结:当数据只需要在下一个forward有用时,用request就够了;
         若数据不只是在下一个forward有用时,就用session。
         上下文,环境信息之类的,用application。


【另一个关于request的知识点】

任务二的时候用到一个

requestScope

那request和requestScope区别是什么呢?

pageContext.request是一个具体的对象,在你的http请求过程中存在。 
requestScope是一个定义, 表明一个http请求的整个声明周期,它只是一个定义而已,不是一个对象。 EL中你可以在这个周期中放置、获取对象。(当然,其实真正的操作也是针对request对象的)。 比如${requestScope.a.b},其实就是要表明我告诉jsp要到requestScope这个声明周期中获取对象a.b.而背后的实现就是从request.getAttribute("a",然后根据表达式得到相应的a.b对象。 



JSP内置对象 
request的主要方法 

getAttribute 
这个方法可以取出指定名称的这个属性的值。这个属性可以用(Stirng name,Object o)方法进行赋值,如果没有对这个属性赋值,则取值得操作返回null 


另外 
request.getParameter("QworkId"); 

这个方法可以获得客户端提交到服务器的参数 


遇到的问题

服务器的nginx老宕机。。。一晚上宕机三次了,

明天查看日志调一下。。。

明天计划的事

完成任务6(吹牛逼


返回列表 返回列表
评论

    分享到