您的位置:首页 > 编程语言 > Java开发

JavaWeb之Servlet day02

2016-04-30 00:28 731 查看

映射细节

1:一个Servlet可以有多个

2:可以使用(*)通配符来给Servlet配置资源名称

方式一:/*使用任何字符都可以访问当前的Servlet
方式二:使用拓展名配置
*.abc 只要Servlet的的资源名后缀为abc就可访问


3:Servlet的生命周期方法执行顺序

构造器>init>service>destory

如果初始化操作非常复杂,那么就应该改变初始化的时机

在web.xml文件中添加配置,数字代表执行初始化的优先级,0表示最先执行

<load-on-startup>0</load-on-startup>


4:Servlet的名称不能为default,default专门用于访问项目下的静态文件

Servlet3.0的注解配置

问题: 如果有多个Servlet 那么就需要在web.xml文件有大量的配置,造成文件过于臃肿

解决方法:使用注解代替xml文件中的部分配置

注解的使用方式

第一步:WebServlet("/注解元素")
第二步:metadata-complete(false)默认为true,删除为false


WebServlet常用的元素

String name() default""; 指定Servlet的名称
String[] value default{};和urlPatterns一样的工功能<url-pattern>
int loadOnStartup() default 0;设置Servlet的初始化时机
WebIitParam[] initParams() default{}设置Servlet的初始化参数


在Servlet中使用注解的优缺点

优点:简单直观,便于维护;
缺点:有以硬编码的形式写入到Servletd代码中


Servlet线程的安全问题

线程不按安全的原因:多线程并发的访问同一份资源

解决方法

1:Servlet实现SingleThreadModel,只允许一个对象进入
2:不使用成员变量,改为当前对象的局部变量,


Http无协议带来的问题

http是无协议状态,也就是没有记忆力,每个请求之间无法共享数据

解决方式

1:参数传递机制,解决请求之间不能共享数据的问题
问题:不安全,信息暴露
2:Cookie:将用户的信息保留在浏览器中
3:Session 将数据保留在服务端,给浏览器一个内存地址,根据地址从内存中过去数据


Cookie

Cookie小甜点:是一个客户端技术,将数据放到浏览器中,(请求头中)

Cookie的基本使用:

1:创建cookie的对象
Cookie(String name,String vlaue)
Cookie c=new Cookie("username","neld")
2:强Cookie中的共享数据交给浏览器
response对象.addCookie(c);
3:获取Cookie的中共享数据
Cookie[]cookies=request对象.getCookie()
for(Cookie c : cookies){
if(“username”.equals(c.getName())){
username = c.getValue();
break;
}
}
4:Cookie中的name和value不支持中文
URLEncoder.encode(String name,String enc)编码,加密
URLDecoder.decode(String name,String enc)解码,解密
5:修改Cookie中的共享数据,
根据Cookie对象调用setValue(String name)即可设置参数值
创建一个新的Cookie对象,name和被修改的Cookie的一样
6:Cookie的生命周期Cookie对象.setMaxAge(int expiry)
expiry=0删除当前的Cookie对象
expiry>0的值表示Cookie存活时间的秒数
expiry<0默认值,浏览器关闭的时候Cookie失效
7:Cookie的路径和域范围
Cookie对象.setPath("/");设置为根路径Cookie对象.setDomain(".baidu.com")


Cookie的缺陷

1: 不支持中文;
2: 共享的数据保存在浏览器,不安全
3: 数据大小限制最大4kb
4: 一次只可以保存一个字符串


Session

Session:会话,实现会话跟踪的技术,实际上底层依然使用Cookie来实现,

是服务端的技术,给浏览器一个内存地址,根据地址从内存中获取数据

1:获取Session
request对象.getSession()
2:设置参数
session对象.setAttribute(String name,Object value);
3:获取参数
session对象.getAttribute(String name);
3:更改参数
session对象.setAttribute(String name,Object vlaue)
4:删除参数
session对象.removeAttribute(参数)
5:销毁session对象
session对象.invalidate();
6:超时管理
session对象.setMaxInactiveInterval(秒数);
7:URL重写,在浏览器关闭Cookie的时候使用
String url = resp.encodeUrl("/session/list");
在跳转页面改为url;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet java web