JAVAEE
doGet和doPost在什么情况下调用
表单标签中的method属性为get时使用doget,为post时调用dopost
转发forward和重定向redirect的区别
转发的服务器行为,重定向的客户端行为
转发通过requestdispatcher对象的forward方法实现,可携带原来的request和response
重定向利用服务器返回的状态码来实现的,客户端请求服务器的时候会返回一个状态码,服务器通过设置状态码301或302,则浏览器会到新的网址重新请求该资源
两者区别
- 从地址栏来说,
转发是服务器请求资源,服务器之间访问目标地址的url,把那个url的响应内容读取过来然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容从哪里来的,所以地址栏的url不会改变
重定向是服务端根据逻辑发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏的url显示的是新的url - 从数据共享来说
转发页面和转发到的页面可以共享request里面的数据
重定向不能共享数据 - 从运用地方来说
转发一般用于用户登录时,根据角色转发到相应的模块
重定向一般用于用户注销登录时返回主页面和跳转到其他网站等 - 从效率来说
转发高
重定向低
servlet与线程安全
servlet不是线程安全的,多线程并发的读写会导致数据不同步的问题
jsp的内置对象,作用分别是什么
request,封装客户端的请求,其中包含来自get或post请求的参数
-
request的主要方法
- setattribute,设置名字为name的request的参数值
- getattribute,返回由name指定的属性值
- getattributenames,返回request对象所有属性的名字集合
- getcookies,返回客户端的所有cookie对象,结果是一个cookie数组
- getcharacterencoding,返回请求中的字符编码方式
- getcontentlength,返回请求的body的长度
- getheader,获取http协议定义的文件头信息
- getheaders返回指定名字的requestheader的所有值
- getheadernames返回所有requestheader的名字
- getinputstream返回请求的输入流,用于获取请求中的数据
- getmethod获取客户端向服务端传送数据的方法
- getparameter获得客户端传送给服务器端的由name指定的参数值
- getparameternames获得客户端传送给服务器端的所有参数的名字
- getparametervalues获得有name指定的参数的所有值
- getprotocol获取客户端向服务器端传送数据所依据的协议名称
- getrequesturl获取发出请求字符串的客户端地址
- getremoteaddr获取客户端的IP地址
- getremotehost获取客户端的名字
- getsession获取和请求相关session
- getservername获取服务器的名字
- getservletpath获取客户端锁清秋的脚本文件路径
- getserverport获取服务器的端口号
response,封装服务器对客户端的响应
pagecontext,通过该对象可以获取其他对象
session,封装用户会话的对象
application,封装服务器运行环境的对象
out,输出服务器相应的输出流对象
config,web应用的配置对象
page,jsp页面本身,相当于java程序中的this
exception,封装页面抛出异常的对象
实现会话跟踪技术有哪些
使用cookie
- 优点,数据可以持久保存,不需要服务器资源,基于文本的key-value
缺点,大小受到限制,用户可以禁用cookie功能,保存在本地,有安全风险
url重写
- 在url中添加用户会话的信息作为请求参数,或者将唯一的会话id添加到url结尾标识一个会话
优点,在cookie被禁用的时候依然可用
缺点,必须对网站的url进行编码,所有页面必须动态生成,不能用预先记录下来的url进行访问
隐藏的表单域
- 利用隐藏的表单传送session数据
优点,在cookie被禁用时可以使用
缺点,所有页面必须是在表单提交之后的结果
httpsession
- 当一个用户第一次访问某个网站时会自动创建httpsession可以通过httpservletrequest对象的getsession方法获得HTTP session,也可以通过HTTP session的setattribute方法将一个值放在HTTP session中。
cookie和session的区别
cookie一般用来保存用户信息
在cookie中保存已经登录过的用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了
一般网站都会有保持登录也就是下次再访问网站的时候就不需要重新登录了,在登录时可以存放一个token在cookie中,下次登录的时候只需要根据token值来查找用户即可
登录一次网站后访问网站其他页面不需要重新登陆
session主要通过服务端记录用户的状态
典型场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为http协议是无状态的,服务端给特定的用户创建特定的session之后就可以表示这个用户并且跟踪这个用户