当前位置: 首页 > news >正文

服务网站备案济南机关建设网站

服务网站备案,济南机关建设网站,网页开发环境一般写什么,哈尔滨快速建站案例目录 #xff08;一#xff09;Cookie概述 1.什么叫Cookie 2.Cookie规范 3.Cookie的覆盖 4.cookie的最大存活时间 ​​​​​​#xff08;Cookie的生命#xff09; #xff08;二#xff09; Cookie的API 1.创建Cookie#xff1a;new 构造方法 2.保存到客户端浏…目录 一Cookie概述 1.什么叫Cookie 2.Cookie规范 3.Cookie的覆盖 4.cookie的最大存活时间 ​​​​​​Cookie的生命  二 Cookie的API 1.创建Cookienew  构造方法 2.保存到客户端浏览器上通过响应对象addCookie() 3.在服务器端获取cookie内容 请求对象Cookie[] getCookies()   三案例记住我功能的实现 1.实现思路 第一步 在servlet中写逻辑代码判断是否勾选“记住我” 第二步在login.jsp 获取服务器传过来的cookie的值,设置到表单元素上 四 HttpSession 1.什么是HttpSesssion 2.获取HttpSession对象 3.HttpSession是域对象 4.案例在登录中引入验证码 第一步在login.jsp页面显示验证码 第二步定义函数在jsp页面编写refreshCode()方法 第三步修改LoginServlet类的代码当验证码错误时显示“验证码错误”若验证码不成功不验证用户名和密码是否正确 一Cookie概述 1.什么叫Cookie Cookie翻译成中文是小甜点小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来当下一次再访问服务器时把Cookie再发送给服务器。        Cookie是由服务器创建然后通过响应发送给客户端的一个键值对。客户端会保存Cookie并会标注出Cookie的来源哪个服务器的Cookie。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器这样服务器就可以识别客户端了 总结 cookie特征 创建于服务器保存于客户端不同的浏览器之间不能共享不能跨浏览器Cookie的keyvalue都是String在之后的请求中cookie会以请求头的方式自动发送给服务器 请求头 缺点 不安全在客户端浏览器的键值不加密keyvalue的数据类型有限只能存string类型的数据 2.Cookie规范 Cookie大小上限为4KB不同的浏览器cookie的内存大小可能不同 一个服务器最多在客户端浏览器上保存20个Cookie 一个浏览器最多保存300个Cookie 注意       不同浏览器之间是不共享Cookie的。也就是说在你使用IE访问服务器时服务器会把Cookie发给IE然后由IE保存起来当你在使用FireFox访问服务器时不可能把IE保存的Cookie发送给服务器。   3.Cookie的覆盖 如果服务器端发送重复的Cookie那么会覆盖原有的Cookie例如客户端的第一个请求服务器端发送的Cookie是Set-Cookie: aA第二请求服务器端发送的是Set-Cookie: aAA那么客户端只留下一个Cookie即aAA。 如果cookie的name与path一样, 覆盖value, 如果没有设置path: 默认值, 创建Cookie的资源上级路径   虽然name相同但path不一样所以没有覆盖 name相同path相同覆盖 cookie的path: localhost:8090/bbb 访问的cookie: path为/下的cookie localhost:8090/user/ccc 访问的cookie: path为/下的cookie和path为/user下的cookie localhost:8090/a/b/c/d: 能访问的cookie: /c 下, /b 下 /a下 /下 path为/下的cookie,可以被所有的资源访问 某个url能访问的cookie: path为父辈级目录的Cookie, 调用setPath()给cookie设置path   4.cookie的最大存活时间 ​​​​​​Cookie的生命  默认存活时间会话级别浏览器关闭这个cookie就会被删除 调用setMaxAge(int 参数) 设置最大存活时间 单位: 秒 -1: 会话级别 0: 存活多少秒, 时间一到,浏览器自动清除 0: 立即删除cookie 会话的概念客户端打开浏览器访问服务器表示会话的开始 只要浏览器不关闭, 这次会话一直存在, 这次会话内所有的请求, 共享同一个session域当客户端关闭浏览器, 表示会话的结束类似于生活中的通话 二 Cookie的API 1.创建Cookienew  构造方法 构造方法 2.保存到客户端浏览器上通过响应对象addCookie() //创建Cookie保存到客户端浏览器上Cookie cookie1 new Cookie(k1,v100);Cookie cookie2 new Cookie(k2,v200);//cookie的设置代码,一定在addCookie()之前//给cookie设置最大存活时间cookie1.setMaxAge(150);cookie2.setMaxAge(150);//保存到客户端resp.addCookie(cookie1);resp.addCookie(cookie2); 添加成功 3.在服务器端获取cookie内容 请求对象Cookie[] getCookies()   WebServlet(/bbb) public class BServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取客户端浏览器传递Cookie// System.out.println(req.getHeader(Cookie));Cookie[] cookies req.getCookies();//循环遍历for (Cookie cookie : cookies) {//获取Cookie的key, valueString name cookie.getName();if(name.equals(username) || name.equals(pwd)){String value cookie.getValue();System.out.println(key:name,value:value);}}}三案例记住我功能的实现 登录成功之后 把用户名密码保存起来 保存方式 1服务器 客户端 选择方案 客户端 2如果保存在服务器 存在哪 3如果保存在客户端 存在哪    存在客户端浏览器 在客户端浏览器上有这三个地方可以存 那么我们应该选择哪一个来保存我们的数据呢        因为我们需要实现的是登录成功之后把用户名、密码保存起来所以这两个数据应该在服务器端的逻辑代码执行完毕之后传给客户端所以是服务器传给客户端的数据。       1.本地存储 localStorage 会话存储 sessionStorage 纯js技术, java没有       2.Cookiejs操作 java也能操作        所以我们选择使用cookie来存储从服务器端传来的数据也就是登录成功之后的用户名和密码。 1.实现思路 登录成功之后,并且用户勾选了“记住我”用户名,密码保存到cookie 第一步 在servlet中写逻辑代码判断是否勾选“记住我” LoginServlet代码 WebServlet(/login) public class LoginServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.设置post请求编码, 响应编码resp.setCharacterEncoding(UTF-8);resp.setContentType(text/html;charsetUTF-8);//进行验证码验证String verifyreq.getParameter(verifycode);HttpSession sessionreq.getSession();String code(String)session.getAttribute(CHECKCODE_SERVER);if (code.equals(verify)){//2.获取请求参数String username req.getParameter(user);String password req.getParameter(password);//3.调用业务层LoginService的登录方法LoginService loginService new LoginServiceImpl();LoginInfo loginInfo loginService.login(username, password);if(loginInfo ! null){ //登陆成功String remreq.getParameter(rem);if(Objects.nonNull(rem)){//把用户名密码保存到cookieCookie cookie1 new Cookie(username, username);Cookie cookie2new Cookie(pwd,password);//设置存活时间 7天cookie1.setMaxAge(60*60*24*7);cookie2.setMaxAge(60*60*24*7);//设置path为/ 项目下任何资源可以访问cookie1.setPath(/);cookie2.setPath(/);//保存到客户端resp.addCookie(cookie1);resp.addCookie(cookie2);}session.setAttribute(login,loginInfo);resp.sendRedirect(/index.jsp);}else{ //登录失败//转发到登录页面//把错误信息保存到request域req.setAttribute(error, 用户名或密码错误);req.getRequestDispatcher(/login.jsp).forward(req, resp);}}else{req.setAttribute(error,验证码错误);req.getRequestDispatcher(/login.jsp).forward(req,resp);}} } 记住我部分 第二步在login.jsp 获取服务器传过来的cookie的值,设置到表单元素上 login.jsp代码 body %Cookie[] cookiesrequest.getCookies();String username;String password;if(cookies!null cookies.length 0){for (Cookie cookie:cookies){if(cookie.getName().equals(username)){usernamecookie.getValue();}if (cookie.getName().equals(pwd)){passwordcookie.getValue();}}} % div classcontainer stylewidth: 400px;h3 styletext-align: center;管理员登录/h3form action/login methodpostdiv classform-grouplabel foruser用户名/labelinput typetext nameuser classform-control iduser placeholder请输入用户名 value%username%//divdiv classform-grouplabel forpassword密码/labelinput typepassword namepassword classform-control idpassword placeholder请输入密码 value%password%//divdiv classform-inlinelabel forvcode验证码/labelinput typetext nameverifycode classform-control idverifycode placeholder请输入验证码 stylewidth: 120px;/a hrefjavascript:refreshCode()img srcvcode title看不清点击刷新 idvcode//a/divdiv classform-inlineinput typecheckbox namerem classform-control idrem valuerem /label forrem记住我/label/divhr/div classform-group styletext-align: center;input classbtn btn btn-primary typesubmit value登录/div/form!-- 出错显示的信息框 --div classalert alert-warning alert-dismissible rolealertbutton typebutton classclose data-dismissalert spantimes;/span/buttonstrong${error}/strong/div /div /body 实现 四 HttpSession Cookie和HttpSession的区别 Cookie创建于服务器保存于客户端 HttpSession域对象创建于服务器保存于服务器同一次会话有效 1.什么是HttpSesssion javax.servlet.http.HttpSession接口表示一个会话我们可以把一个会话内需要共享的数据保存到HttpSession对象中 每一个客户端都有自己的Session session作用: 域对象功能, 存,取数据 2.获取HttpSession对象 通过request对象的getSession()来获取 HttpSession request.getSesssion()如果当前会话已经有了session对象那么直接返回如果当前会话还不存在会话那么创建session并返回 HttpSession request.getSession(boolean)当参数为true时与requeset.getSession()相同。如果参数为false那么如果当前会话中存在session则返回不存在返回null 3.HttpSession是域对象 HttpServletRequest一个请求创建一个request对象所以在同一个请求中可以共享request例如一个请求从AServlet转发到BServlet那么AServlet和BServlet可以共享request域中的数据 ServletContext一个应用只创建一个ServletContext对象所以在ServletContext中的数据可以在整个应用中共享只要不启动服务器那么ServletContext中的数据就可以共享 HttpSession一个会话创建一个HttpSession对象同一会话中的多个请求中可以共享session中的数据 下面是session的域方法 void setAttribute(String name, Object value)用来存储一个对象也可以称之为存储一个域属性例如session.setAttribute(“xxx”, “XXX”)在session中保存了一个域属性域属性名称为xxx域属性的值为XXX。请注意如果多次调用该方法并且使用相同的name那么会覆盖上一次的值这一特性与Map相同 Object getAttribute(String name)用来获取session中的数据当前在获取之前需要先去存储才行例如String value (String) session.getAttribute(“xxx”);获取名为xxx的域属性 void removeAttribute(String name)用来移除HttpSession中的域属性如果参数name指定的域属性不存在那么本方法什么都不做 Enumeration getAttributeNames()获取所有域属性的名称 4.案例在登录中引入验证码 生成验证码Servlet 在一个矩形框内生成随机字符 /*** 验证码*/ WebServlet(/checkCode) public class CheckCodeServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//服务器通知浏览器不要缓存response.setHeader(pragma,no-cache);response.setHeader(cache-control,no-cache);response.setHeader(expires,0);//在内存中创建一个长80宽30的图片默认黑色背景//参数一长//参数二宽//参数三颜色int width 80;int height 30;BufferedImage image new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//获取画笔Graphics g image.getGraphics();//设置画笔颜色为灰色g.setColor(Color.GRAY);//填充图片g.fillRect(0,0, width,height);//产生4个随机验证码12EyString checkCode getCheckCode();//将验证码放入HttpSession中request.getSession().setAttribute(CHECKCODE_SERVER,checkCode);//设置画笔颜色为黄色g.setColor(Color.YELLOW);//设置字体的小大g.setFont(new Font(黑体,Font.BOLD,24));//向图片上写入验证码g.drawString(checkCode,15,25);//将内存中的图片输出到浏览器//参数一图片对象//参数二图片的格式如PNG,JPG,GIF//参数三图片输出到哪里去ImageIO.write(image,PNG,response.getOutputStream());}/*** 产生4位随机字符串 */private String getCheckCode() {String base 0123456789ABCDEFGabcdefg;int size base.length();Random r new Random();StringBuffer sb new StringBuffer();for(int i1;i4;i){//产生0到size-1的随机值int index r.nextInt(size);//在base字符串中获取下标为index的字符char c base.charAt(index);//将c放入到StringBuffer中去sb.append(c);}return sb.toString();}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);} } 第一步在login.jsp页面显示验证码 div classform-inlinelabel forvcode验证码/labelinput typetext nameverifycode classform-control idverifycode placeholder请输入验证码 stylewidth: 120px;/a hrefjavascript:refreshCode()img srcvcode title看不清点击刷新 idvcode//a /div 第二步定义函数在jsp页面编写refreshCode()方法 script typetext/javascriptfunction refreshCode() {//每次点击时重新生成验证码console.log(refreshCode....)//选择器 #id名//获取到img标签 浏览器缓存,url没有变化使用上一次缓存的内容//加一个时间戳每一次都不一样浏览器发现参数不一样以为是新请求不使用上一次缓存$(#vcode).attr(src,/checkCode?timenew Date().getTime())}/script 第三步修改LoginServlet类的代码当验证码错误时显示“验证码错误”若验证码不成功不验证用户名和密码是否正确 //进行验证码验证String verifyreq.getParameter(verifycode);HttpSession sessionreq.getSession();String code(String)session.getAttribute(CHECKCODE_SERVER);if (code.equals(verify)){//2.获取请求参数String username req.getParameter(user);String password req.getParameter(password);//3.调用业务层LoginService的登录方法LoginService loginService new LoginServiceImpl();LoginInfo loginInfo loginService.login(username, password);if(loginInfo ! null){ //登陆成功String remreq.getParameter(rem);if(Objects.nonNull(rem)){//把用户名密码保存到cookieCookie cookie1 new Cookie(username, username);Cookie cookie2new Cookie(pwd,password);//设置存活时间 7天cookie1.setMaxAge(60*60*24*7);cookie2.setMaxAge(60*60*24*7);//设置path为/ 项目下任何资源可以访问cookie1.setPath(/);cookie2.setPath(/);//保存到客户端resp.addCookie(cookie1);resp.addCookie(cookie2);}session.setAttribute(login,loginInfo);resp.sendRedirect(/index.jsp);}else{ //登录失败//转发到登录页面//把错误信息保存到request域req.setAttribute(error, 用户名或密码错误);req.getRequestDispatcher(/login.jsp).forward(req, resp);}}else{req.setAttribute(error,验证码错误);req.getRequestDispatcher(/login.jsp).forward(req,resp);} 结果 登录成功 验证码错误
http://www.w-s-a.com/news/486174/

相关文章:

  • 中国企业信用网四川游戏seo整站优化
  • 下载站推广wordpress扩展字段
  • 网站建设这个工作怎么样免费电子版个人简历模板
  • 移动网站设计与制作网站开发接私活
  • 视频制作素材网站wordpress mysql 被删
  • 静态网站 模板公司一般都用什么邮箱
  • 做网站效果图是用ps还是ai泰安人才网最新招聘信息2022年
  • 免费建站网站一级大录像不卡在线看网页郑州网站关键
  • 做网站 然后百度推广哈尔滨建筑网
  • 章丘营销型网站建设网站测评必须做
  • 营销者网站怎么把网站黑了
  • 律师事务所手机网站校园网站设计
  • 网站案例展示分类网站响应速度优化
  • 风景网站的制作网站ip地址查询域名
  • 怎样看网站是谁做的马鞍山什么房产网站做的好
  • 西安推荐企业网站制作平台软装设计方案ppt
  • 网站静态页模板专业网站设计开发公司
  • 手机免费在线搭建网站短网址生成防红
  • 天津网站设计网站制作如何新建wordpress
  • 山东省建设备案网站审批国际新闻最新消息10条简短
  • 成都市建设网扬尘监控网站短域名转换
  • 怎么做手机网站潍坊建设银行网站
  • 做网站分什么软件品牌设计培训
  • 太原网站设计排名设计本装修效果图
  • 网站个人中心模板石家庄网站系统开发
  • 优秀的电子商务网站教育公司网站建设文案
  • 网站开发市场成本网站链接推广工具
  • 猪八戒做网站排名常州seo博客
  • wordpress 网站遭篡改如何优化公司的网站
  • 汉中公司做网站网站建设的风格设置