- 浏览: 85503 次
文章分类
最新评论
会话Session and Cookie
1、session:用户打开一个网站,只要不关闭浏览器(服务器中间没重启),称这样的操作为一次会话。
2、Cookie :记录历史访问、保存用户名密码.可被多个浏览器共享,一个浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
cookie是以明文存放,安全性较低;
创建cookie
cookie是明文保存的;
读取cookie
页面取cookie:
value="<%=cookie1%>"
删除cookie:ck.setMaxAge(0);
设置为负数,在浏览器关闭时删除,相当于会话级别。
session的运用:购物车
第一次访问自动创建;cookie需要手动创建回送给浏览器一个http响应头,把sessionID带回给浏览器以cookie的方式,在会话结束或30分钟时清除
再次访问服务器时,web服务器内存接到request时读取到sessionID,就能在内存中查到该id的信息。
setAttribute(java.lang.String name, java.lang.Object value)
一个浏览器对应一个session对象,而cookie是可以是多个浏览器共存,cookie是对象数组
session是存在服务器的内存里的,不是存在浏览器中
注意游览器设置,单进程浏览器:无论打开多个浏览器都使用同一个session;一般来说是多进程浏览器,一个浏览器独享一个session
session的生命周期
默认是30分钟,在tomcat/web.xml中设置的
也可通过session.setMaxInac...(int) 设置
HttpSession session = request.getSession;
设置属性:
session.setAttribute("user",user);
获取属性
User u = session.getAttribute("user");
清除session的某个属性
session.removeAtrribute("user");
当用户成功登陆后,将用户信息存放在session内,不用每次都连接数据库验证,当内存肿么没有该用户信息时,要求登陆验证;
验证码:使用到java的绘图技术
image.jsp
login.jsp
禁用cookie和禁用session
1、浏览器设置禁用cookie(原session失效,将重新创建session,每次请求都要创建session)
2、实现禁用cookie后继续使用原session:url重写
c标签的遍历list/map
1、session:用户打开一个网站,只要不关闭浏览器(服务器中间没重启),称这样的操作为一次会话。
2、Cookie :记录历史访问、保存用户名密码.可被多个浏览器共享,一个浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
cookie是以明文存放,安全性较低;
创建cookie
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Cookie(java.lang.String name, java.lang.String value) Cookie ck = new Cookie("cookie1", "name"); ck.setMaxAge(600);//600s //发送个浏览器 response.addCookie(ck); }
cookie是明文保存的;
读取cookie
Cookie[] ck = request.getCookies(); for(int i =0;i<ck.length;i++) { if("cookie1".equals(ck[i].getName())) { System.out.println(ck[i].getValue()); } }
页面取cookie:
value="<%=cookie1%>"
删除cookie:ck.setMaxAge(0);
设置为负数,在浏览器关闭时删除,相当于会话级别。
session的运用:购物车
第一次访问自动创建;cookie需要手动创建回送给浏览器一个http响应头,把sessionID带回给浏览器以cookie的方式,在会话结束或30分钟时清除
再次访问服务器时,web服务器内存接到request时读取到sessionID,就能在内存中查到该id的信息。
setAttribute(java.lang.String name, java.lang.Object value)
一个浏览器对应一个session对象,而cookie是可以是多个浏览器共存,cookie是对象数组
session是存在服务器的内存里的,不是存在浏览器中
注意游览器设置,单进程浏览器:无论打开多个浏览器都使用同一个session;一般来说是多进程浏览器,一个浏览器独享一个session
session的生命周期
默认是30分钟,在tomcat/web.xml中设置的
也可通过session.setMaxInac...(int) 设置
HttpSession session = request.getSession;
设置属性:
session.setAttribute("user",user);
获取属性
User u = session.getAttribute("user");
清除session的某个属性
session.removeAtrribute("user");
当用户成功登陆后,将用户信息存放在session内,不用每次都连接数据库验证,当内存肿么没有该用户信息时,要求登陆验证;
验证码:使用到java的绘图技术
image.jsp
<%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" %> <%! Color getRandColor(int fc,int bc) { Random random = new Random(); if(fc>255) fc=255; if(bc>255) bc=255; int r=fc+random.nextInt(bc-fc); int g=fc+random.nextInt(bc-fc); int b=fc+random.nextInt(bc-fc); return new Color(r,g,b); } %> <% //out.clear();//这句针对resin服务器,如果是tomacat可以不要这句 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); //设置长高 int width=60, height=20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); Random random = new Random(); g.setColor(getRandColor(200,250)); g.fillRect(0, 0, width, height); g.setFont(new Font("Times New Roman",Font.PLAIN,18)); g.setColor(getRandColor(160,200)); for (int i=0;i<155;i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); } String sRand=""; //设置位数 for (int i=0;i<4;i++){ String rand=String.valueOf(random.nextInt(10)); sRand+=rand; g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); g.drawString(rand,13*i+6,16); } // 将认证码存入SESSION session.setAttribute("rand",sRand); g.dispose(); ImageIO.write(image, "JPEG", response.getOutputStream()); out.clear(); out = pageContext.pushBody(); %>
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>login.jsp</title> <script language="javascript"> function loadimage(){ //加个随即数字是为了使每次访问image.jsp的地址不一样,这样浏览器不会取本地缓存的数据。 document.getElementById("checkid").src = "<%=path%>/pages/image.jsp?"+Math.random(); } </script> </head> <body> <% String str = (String)request.getAttribute("info"); if(null != str) response.getWriter().print(str); %> <form action="<%=path%>/servlet/LoginCk" method="post" style="margin-left: 40% ;margin-top: 8%" > 用户id:<input type="text" name="id"><br> 密 码:<input type="password" name="pwd"><br> 验证码: <input type="text" name="checkid"><img border=0 id="checkid" src="<%=path%>/pages/image.jsp"/> <a href="javascript:loadimage();">看不清点我</font></a> <br> <input type="submit"> <input type="reset"> </form> </body> </html>
禁用cookie和禁用session
1、浏览器设置禁用cookie(原session失效,将重新创建session,每次请求都要创建session)
2、实现禁用cookie后继续使用原session:url重写
c标签的遍历list/map
<%-- <c:forEach items="${books}" var="vo"> ${vo}<br/> </c:forEach> --%> id----> 书 名---->购买数量<br/> <c:forEach items="${books}" var="vo"> ${vo.key}----> ${vo.value.name}---->${vo.value.num}<br/> </c:forEach> <br/>
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id").trim(); String name = request.getParameter("name").trim(); HttpSession session = request.getSession(); HashMap<String, Book> hm = (HashMap<String, Book>)session.getAttribute("books"); if(null == hm) { hm = new HashMap<String, Book>(); Book b = new Book(); b.setId(Integer.parseInt(id)); b.setName(name); b.setNum(1); session.setAttribute("books", hm); }else { //已经购买,数量+1 if(hm.containsKey(id)) { Book b = hm.get(id); b.setNum(b.getNum()+1); hm.put(id, b); } //第一次购买 else { Book b = new Book(); b.setId(Integer.parseInt(id)); b.setName(name); b.setNum(1); hm.put(id, b); } } /*ArrayList list = (ArrayList)session.getAttribute("books"); if(null == list) { list = new ArrayList(); } list.add(book);*/ session.setAttribute("books", hm); request.getRequestDispatcher("/pages/booklist.jsp").forward(request, response); return; }
发表评论
-
41、解决HttpServletResponse输出的中文乱码问题
2015-04-12 21:48 1164response返回有两种,一种是字节流outputs ... -
41、轮询
2015-04-12 08:50 0浏览器关闭使session失效 ... -
40、spring ajax/easyui 中文乱码的解决
2015-04-04 14:52 651使用spingmvc,在JS里面通过ajax发送请求,并 ... -
39、.net
2015-03-28 23:12 511熟悉java编程,自然学习c#就会比较容易,有几个点需要说明下 ... -
38、servlet-- JSTL+EL(c标签、${})
2015-03-23 15:57 750参看:http://www.cnblogs.com/xdp-g ... -
37、servlet--jsp
2015-03-23 15:07 458不管是JSP还是Servlet,虽然都可以用于开发动 ... -
36、servlet--防止表单重复提交
2015-03-23 14:33 6751、在网络延迟会或服务器反应过慢的情况下让用户有时间点击多次s ... -
35、servlet--servletContext
2015-03-22 13:41 443servletContext接口是Servlet中最大的一个接 ... -
33、servlet--转发/web开发指导思想
2015-03-21 12:31 412转发: req.getRequestDispatcher(&q ... -
32、servlet --重定向/下载/缓存/中文乱码
2015-03-20 23:21 993重定向1、sendRedirect rep.sendRedir ... -
31、servlet--开发方式
2015-03-20 21:55 595servlet:利用java技术开发动态网页的技术,是学习ja ... -
30、servlet---tomcat原理
2015-03-20 18:20 649Servlet出现得早,servlet很强大,但是se ... -
29、servlet--jsp执行过程
2015-03-20 15:08 408J2EE的13种核心技术:JDBC、JNDI、EJBs、 ... -
29、springmvc+spring+mybatis+oracle12的demo
2015-03-15 20:29 0每次搭建都要重头搭建,累~~ 注意:用12c的jdbc 在安 ... -
27、Tomcat多次加载项目问题
2015-03-12 15:30 510错误配置方式: <Host name="lo ... -
26、数据分页(jsp+servlet)
2015-03-12 15:19 444随着数据库中存储的数据的增多,满足用户查询条件的数据也 ... -
llll.文档设计
2015-03-11 13:31 0设计文档与代码实现到 ... -
24、webservice_短信接口
2015-03-11 10:48 758http://blog.csdn.net/sxdtzhaoxi ... -
25、RMI_demo1
2015-03-11 10:48 405Java RMI 指的是远程方法调用 (Remote Meth ... -
23、svn
2015-03-11 10:48 398<参看>http://blog.csdn.net/ ...
相关推荐
</init-param><br/> <init-param><br/> <param-name>height</param-name><br/> <param-value>20</param-value><br/> </init-param><br/> </servlet><br/> <br/> <servlet-mapping><br/> <servlet-name>checkimage</...
ACCP 6.0 S2-5-使用JSP/Servlet/Ajax技术开发新闻发布系统 PPT课件
<servlet-class>servlet.loginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/servlet/loginServlet</url-pattern> </servlet-mapping> ...
<servlet-name>AxisServlet</servlet-name> <servlet-class> org.apache.axis.transport.http.AxisServlet </servlet-class> </servlet> <servlet> <servlet-name>AdminServlet</servlet-name> ...
赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class> </servlet> <!-- 用来管理Webservice的Servlet --> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
<servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern...
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>...
赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...
<servlet-name>CheckCodeImage</servlet-name> <servlet-class>com.netshop.common.util.CheckCodeImage</servlet-class> </servlet> <servlet-mapping> <servlet-name>CheckCodeImage</servlet-name> ...
赠送jar包:javax.servlet-api-4.0.1.jar; 赠送原API文档:javax.servlet-api-4.0.1-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.1-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.1.pom; ...
servlet源代码本来就是开放的,CSDN居然那么多人要...本资源是来自从Maven的servlet-api-3.1源代码,原地址还有servlet-api、servlet-api-doc,本资源仅仅下载了源代码的部分,需要的朋友可以去以下网址下载其它内容: ...
<servlet-name>Connector</servlet-name> <servlet-class> com.FCKeditor.connector.ConnectorServlet </servlet-class> <init-param> <param-name>baseDir</param-name> <param-value>/upload/</param-value...
<servlet-name>Connector</servlet-name> <servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name...
赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....
下地址https://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.1.0/ 各个版本都有 javax.servlet-api-3.1.0-sources.jar
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>account</servlet-name> <url-...
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher</servlet-class> </servlet> <servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/app/service/*...
赠送jar包:sentinel-web-servlet-1.8.0.jar; 赠送原API文档:sentinel-web-servlet-1.8.0-javadoc.jar; 赠送源代码:sentinel-web-servlet-1.8.0-sources.jar; 赠送Maven依赖信息文件:sentinel-web-servlet-...