Web(2)


200:表示请求处理成功

302:表示请求重定向(后面讲)

304:表示通知浏览器使用缓存

404:表示资源找不到

500:表示服务器内部错误。

3OK:描述短语

200OK

404Not Found

500Internal Server Error

----------------------------------------------------------------------------------------------------------------

块级元素:默认情况下,块级元素独占一行,可以设置宽和高

行内元素:多个行内元素在同一行,不能设置宽高

行内块元素:可以同行显示,还可以设置宽高

----------------------------------------------------------------------------------------------------------------

JS是一门基于对象和事件驱动的脚本语言。

边解释,边执行    

弱语言类型

js的优势:

交互性、安全性、跨平台性

js中的数据类型

    1.数值:所有数值都是浮点型

    2.字符串类型

    3.布尔类型

    4.复杂数据类型

两个等号, 在进行比较时, 如果两边的值不是同一种类型, 会自动转成同一种类型在进行比较.如果内容相同, 也会返回true.

三个等号, 在进行比较时, 如果两边的值不是同一种类型, 直接返回false. 如果值是同一种类型, 内容相同才会返回true.

----------------------------------------------------------------------------------------------------------------

Jquery是一个JS函数库

优点:简化JS代码、可以像CSS那样获取页面元素

缺点:高版本不支持低版本:版本升级,会增删一些方法。

不可以通过jQuery对象来调用js的属性或者js的方法. 反之也不可以通过JS对象来调用jQuery的属性或者jQuery方法否则调用会报错!!

JS转换成jQuery对象

var oInp =document.getElementById("username");

 var $Inp = $(oInp);

jQuesy转成Js对象

var oInp = ¥Inp[0];

----------------------------------------------------------------------------------------------------------------

jQuery选择器

1.基本选择器

    元素选择器       $("div")

    类选择器           $(".class")

    Id选择器           $("#ID")

    多元素选择器    $("div,.class,#ID")

2.层级选择器

    后代选择器        $("body div"):body内所有div

    子选择器            $("body>div")body内子<div>

    相邻兄弟选择器  $("#one+div")id为one的下一个<div>

                               $("#two~div")id为two元素后所有的兄弟div元素

3.内容选择器

$(“div:empty”) – 匹配所有div中内容为空的div元素

4.可见选择器

$(“div:hidden”) – 匹配所有隐藏的div元素

5.属性选择器

$(“div[id=’d1’]”) – 匹配具有id属性并且值为d1div元素

6.子元素选择器

$(“div span:nth-child(n)”) – 匹配div内部的第nspan元素

7.表单选择器

$(“:password”) – 匹配所有的密码输入框

----------------------------------------------------------------------------------------------------------------

WEB应用:所有的web资源按照一定的目录结构组织起来的就是一个web应用。虚拟主机不能直接管理web资源

所谓的虚拟主机就是tomcat服务器中配置的一个站点,在访问时就好像访问一台真实的主机一样

----------------------------------------------------------------------------------------------------------------

HTTP协议基本原则

1.基于请求响应模型

2.一次请求对应一次响应

3.请求只能有客户端发出,服务器只能被动响应。

----------------------------------------------------------------------------------------------------------------

GET请求和POST请求方式的区别

主要体现在请求参数发送过程的不相同

GET提交: 通过请求行拼接参数将数据发送给服务器

1)通过地址栏携带参数, 非常不安全

2)通过地址栏发送数据, 数据量不能太大(不能超过1kb或者是4kb);

POST提交: 通过请求实体内容携带参数, 数据不会显示在地址栏

1)参数不会出现地址栏, 相对更安全

2)数据通过请求实体内容发送, 数据量理论上没有限制.

----------------------------------------------------------------------------------------------------------------

    Servlet是由SUN公司提供的动态web资源开发技术, 本质上是一段java程序(继承GenericServlet或者HttpServlet类), 这段java程序无法独立运行, 必须放在Servlet容器(比如: tomcat服务器)中, 由容器调用才可以执行!

    Servlet在第一次被访问时创建Servlet实例, 创建之后服务器会立即调用init方法进行初始化的操作, 创建之后, Servlet实例会一直驻留在服务器的内存中, 为后续的请求服务. 只要有请求来访问这个Servlet, 服务器就会调用service方法来处理请求, 直到服务器关闭或者WEB应用被移出容器, 随着WEB应用的销毁, Servlet实例也会跟着销毁, 在销毁之前服务器会调用destroy方法进行善后的处理.

----------------------------------------------------------------------------------------------------------------

请求参数的乱码问题:

    

问题描述在通过request对象获取请求参数时, 如果参数中有中文数据在获取时就会出现乱码其原因是由于浏览器发送参数时(编码时)使用的码表 服务器在结束数据时(解码时)使用的码表不一致造成的!

(1) 浏览器发送数据时使用的码表浏览器在发送数据时使用的码表取决于打开页面时使用的码表即浏览器使用什么编码打开页面就会使用相同的编码来发送数据这里使用的是utf-8这个码表!

(2) 服务器接收数据时使用的码表服务器在接收数据时默认使用iso8859-1来接收请求参数

 

解决方案:让编码时使用的码表和解码时使用的码表保持一致即可!!!可以手动解码,再反向编码即可。

如果发送的请求方式是POST提交,还可以通过如下方法:

request.setCharacterEncoding(“utf-8”); 这行代码是通知服务器使用utf-8来接收请求实体内容中的数据

由于POST提交的参数刚好在请求实体内容中, 所以这行代码可以解决POST提交时产生乱码问题.

但是由于GET提交的参数在请求行中的请求资源路径后面拼接着, 不在请求实体内容中所有这行代码对GET提交产生的乱码不会起作用!

----------------------------------------------------------------------------------------------------------------

使用字节流响应发送中文数据乱码:


在发送中文数据时出现了乱码,那么乱码产生的原因

1)服务端在发送数据,数据使用的编码是GBK(字符串转成二进制数组调用的是getBytes()这个方法如果不指定,将会使用默认的平台码GBK)

2)浏览器自己有默认的编码(比如谷歌)如果不指定,默认使用utf-8来接收数据. 发送数据和接收数据使用的码表不一致造成乱码。

解决方案:

第一步:设置服务器端发送的数据使用的编码是UTF-8

第二步:设置浏览器接收数据时使用的编码为UTF-8

等价于<====>

----------------------------------------------------------------------------------------------------------------

使用字节流响应发送中文数据乱码:

乱码产生的原因

1)服务器端使用字符流发送数据,底层需要将字符转成字节,这时需要使用一个码表,如果不指定,服务器默认使用iso8859-1编码,而这个编码中没有中文汉字,所以必然会出现乱码!

2)无论客户端使用什么编码,接收到的数据都是乱码!

解决方案:

response.setContentType("text/html;charset=utf-8");

-- 这行代码有两个作用,既会通知服务器用utf-8来发送数据,也会通知浏览器使用utf-8来接收数据!

----------------------------------------------------------------------------------------------------------------

总结:response.setContentType("text/html;charset=utf-8");可以终结响应发送中文数据乱码:

----------------------------------------------------------------------------------------------------------------

三种资源跳转总结:

1.请求转发

1)一次请求,一次响应(request对象是同一个)

2)地址栏地址不会发生变化

3)转发只能在同一个WEB应用内部的资源之间进行跳转,不能在不同的WEB应用或者是不同的虚拟主机之间进行跳转。否则将会提示找不到资源.

2.重定向

1)两次请求,两次响应(request对象不是同一个)

2)地址栏地址会发生变化

3)既可以在同一个WEB应用内部的资源之间进行跳转,也可以在不同的WEB应用或者是不同的虚拟主机之间进行跳转如下:


3、定时刷新

1)两次请求,两次响应(request对象不是同一个)

2)地址栏地址会发生变化

3)既可以在同一个WEB应用内部的资源之间进行跳转,也可以在不同的WEB应用或者是不同的虚拟主机之间进行跳转,如下:

4)定时刷新和重定向主要的区别在于,重定向是立即跳转,而定时刷新是在指定多少秒之后立即跳转,并且在跳转之前,可以向浏览器发送响应数据并维系一段时间.

 请求转发、重定向、定时刷新分别在什么情况下使用?

1、如果是同一个WEB应用内部资源的跳转,三种方式都可以,具体使用哪一种:

1)如果希望在跳转之后地址栏地址不会发生变化,这里只能使用请求转发

2)如果希望在跳转之后地址栏地址会发生变化,这里可以使用重定向或定时刷新

3)如果在跳转的过程中,希望带数据到目的地,这里只能使用请求转发

4)如果没有什么特别的需求,仅仅是做一个跳转,推荐使用转发. 因为转发是一次请求,可以减少访问服务器的次数,减少服务器的压力!

2、如果是不同的WEB应用之间资源的跳转,只能使用重定向和定时刷新,具体使用哪一种: 

重定向是立即跳转,中间没有间隔,而定时刷新可以指定多少秒之后再进行跳转,在跳转之前,还可以发送响应到客户端,并维系一段时间

1)因此如果需要指定多少时间之后再跳转可以使用定时刷新,如果在跳转之前,需要提示用户,可以使用定时刷新.

2)如果没有什么特殊需要,两种方式都可以.

----------------------------------------------------------------------------------------------------------------

四大域总结:

request:

生命周期一次请求开始创建request对象, 响应结束request对象就销毁了

作用范围: 整个请求链中

Session:

生命周期:当第一次调用request.getSession方法时,创建session对象

(2)销毁:

a)超时销毁:如果session 30分钟没有被使用则会超时销毁可以在web应用的web.xml文件中修改session的超时时间.

b)自杀:当调用session.invalidate方法时,将会立即销毁session

c)意外身亡:当服务器非正常关闭时,session会销毁! 如果服务器正常关闭,session将会以文件的形式保存在服务器的work目录下,这个过程称之为session的钝化. 当服务器再次启动时,钝化着的session还可以再恢复回来,这个过程称之为session的活化!

作用范围:整个会话范围内


ServletContext:

生命周期:在WEB应用被加载后,服务器立即创建代表当前WEB应用的ServletContext对象,在WEB应用被移出容器时,随着WEB应用的销毁,对象也跟着销毁!

作用范围:整个WEB应用

功能:在整个WEB应用中实现数据共享


pageContext
生命周期:
访问JSP开始时创建pageContext对象, 访问JSP结束时销毁pageContext对象
作用范围:
当前JSP中
主要功能:
在当前JSP中共享数据

----------------------------------------------------------------------------------------------------------------

JSP在第一次访问时,会被翻译成一个Servlet,对JSP访问后看到的页面 其实就是翻译后的Servlet在向外输出!

----------------------------------------------------------------------------------------------------------------

JSP九大隐式对象:

page                    this

request                ServletRequest

response              ServletResponse

application           ServletContext

config                   ServletConfig

expection

out                         response.getWriter()

pageContext         通过这个对象可以获得其他八大隐式对象

----------------------------------------------------------------------------------------------------------------

pageContext是一个域对象

生命周期:当访问JSP开始时创建pageConext对象,当访问JSP结束时销毁pageContext对象.

作用范围: 整个JSP页面

主要功能: 在整个JSP页面中实现数据的共享

----------------------------------------------------------------------------------------------------------------

如何在浏览器关闭之后再打开时获取之前的session

1问题描述:由于session创建之后,服务器会将Sessionid作为Cookie发送给浏览器保存,方便浏览器下次来访问服务器时,可以通过CookieSessionid带给服务器,这样就可以找到之前的session. 如果浏览器中途关闭,Cookie会丢失(服务器默认发送的Cookie是会话级别的Cookie)sessionid也会丢失,所以再次访问服务器时,找不到之前的session.

2、解决方案:

在创建session后,服务器会向浏览器发送Cookie来保存sessionid我们也可以向浏览器发送Cookie也保存sessionid区别是我们发送的Cookie可以设置最大生存时间,这个Cookie将会保存在硬盘上,即使浏览器关闭Cookie也不会丢失,下次来访问服务器仍然可以带着sessionid也可以获取之前的之前.

保存session id的几种方式

A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
B.由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

----------------------------------------------------------------------------------------------------------------

URL重写有什么缺点

对所有的URL使用URL重写,包括超链接,form的action,和重定向的URL。每个引用你的站点的URL,以及那些返回给用户的URL(即使通过间接手段,比如服务器重定向中的Location字段)都要添加额外的信息。
这意味着在你的站点上不能有任何静态的HTML页面(至少静态页面中不能有任何链接到站点动态页面的链接)。因此,每个页面都必须使用servlet或 JSP动态生成。即使所有的页面都动态生成,如果用户离开了会话并通过书签或链接再次回来,会话的信息都会丢失,因为存储下来的链接含有错误的标识信息-该URL后面的SESSION ID已经过期了。





阅读更多
文章标签: 装饰者模式
个人分类: java
想对作者说点什么? 我来说一句

vuejs 2 web development projects

2018年03月09日 6.01MB 下载

没有更多推荐了,返回首页

不良信息举报

Web(2)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭