Servlet实现记录你是当前第几个访问者
注意事项:
1.防止线程安全问题
2.在使用同步代码块选择锁对象,通常会使用当前servlet程序对象
servletConfig对象
1 2 3 4 5 6 7 8 9 10 11 12 13
| <servlet> <servlet-name>configServlet</servlet-name> <servlet-class>b_servletconfig.configServlet</servlet-class> <init-param> <param-name>user</param-name> <param-value>root</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>12345</param-value> </init-param> </servlet>
|
1 2 3 4 5 6 7
| 在web.xml文件中利用<intt-param>标签来定义Servlet初始化参数,主要包含两个子标签 <param-name> <param-value> 当Tomcat服务器程序启动,WEB容器在创建servlet时,会把初始化参数封装到ServletConfig对象中, 这个ServletConfig对象,会作为Servlet对象的初始化方法init的参数
【注意】 在一个Servlet 对应一个ServletConfig
|
ServletContext
1 2 3 4 5 6 7 8
| 表示当前整个WEB应用,一个WEB应用有且只有一个ServletContext对象
1.获取WEB应用的路径 ServletContext context = this.getServletContext(); context.getContextPath(); request.getContextPath();
2.WEB应用的全局参数
|
1 2 3 4 5
| <context-param> <param-name>AAA</param-name> <param-value>aaa</param-value> </context-param>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| context.getInitParameter(String parameter);
3.ServletContext是一个域对象
request,session域
可以利用ServletContext域对象,完成整个WEB项目中的数据共享传递 不仅能传递基本数据类型,也可以传递类对象类型 setAttribute(String name, Object value); getAttribute(String name);
4.转发和重定向 WEB服务器接收到客户端的请求之后,让Tomcat服务器去调用另一个WEB资源,这称之为转发 request域转发 request.setAttribute(String name, Object value) req.getRequestDispatcher(String uri).forward(HttpServletRequest req, HttpServletResponse resp) uri:服务器端要访问别的WEB资源路径,这里是服务器端的地址,一般用 / 来头,表示WEB项目的根目录 HttpServletRequest req:原本用户请求当前页面的request对象 HttpServletResponse resp: 原本用户请求当前页面生成的response对象 重定向 response.sendRedirect(String url); 这个url是相对于webapps的,是提供给浏览器使用的URL 推荐写法 response.sendRedirect(request.getContextPath() + "重定向地址"); 【注意】 在重定向的情况下,request域不能使用
|
会话控制
软件中的会话:
打开浏览器——>访问服务器上的内容——>关闭浏览器
登录业务场景:
打开浏览器 ->访问登录页面->输入用户名 密码 验证码->发送给服务器->服务器验证信息->返回给浏览器->浏览器加载页面
发现:
一处登录,处处使用
购物车场景:
在手机淘宝app选购,加入购物车,网页的也能看到。
这里的购物车数据在哪里保存
会话控制技术:
管理 浏览器客户端 和 服务器 之间进行会话过程产生的会话数据
会话控制技术
Cookie技术:会话数据保存在浏览器客户端,也就是用户本地
Session技术:会话数据保存在服务器上
Cookie技术
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 核心技术: 1.创建Cookie对象 Cookie(String name, String value); 2.设置Cookie setvalue(String name) setPath(String path); setMax(int time); 3.发送Cookie到浏览器保存 response.addCookie(Cookie c); 4.服务器接受浏览器访问时带来的Cookie数据 Cookie[] request.getCookies(); Cookie有一定的局限性 1.限制数据类型 必须是String 2.不能保存中文 3.Cookie保存数据容量较小,只有4KB
【但是有前提,需要开启Cookie才可以使用Session】 Session的特点: 会话数据保存在服务器上,可以生成临时或者永久temp文件
|
Session技术
1 2 3 4 5 6 7 8 9 10 11 12 13
| HttpSession 1.获取Session对象 HttpSession getSession(); HttpSession getSession(boolean create); 2.设置Session有效时间 void setMaxInactiveInterval(int interval); void invalidate(); String getId(); 3.Session也是一个域对象,这里可以保存数据属性到Session void setAttribute(String name, Object value); Object getAttribute(String name); void removeAttribute(String name);
|