Servlet映射、Servlet中的两个init()方法、Servlet中的config对象介绍
程序员文章站
2022-05-03 09:06:22
1.Servlet映射
Servlet的映射路径:
xxxServlet
/XXXServlet...
1.Servlet映射
Servlet的映射路径: xxxServlet /XXXServlet 映射路径分为两种: 1) 精确匹配:以斜杠开头 /hello /hello/westos.. 优先级要高于模糊匹配. 2) 模糊匹配: 具体分为两种: a:/* /任意路径 b:*.(action .do .html) :以*号开头 ,任意路径后面必须有指定的后缀结尾 /* 它的优先级要高于带指定的后缀的优先级 缺省路径: 在tomcat server.xml文件中有一个DefaultServlet这个名词它对应的url-pattern :/
2.Servlet中的两个init()方法
init(ServletConfig config) :带参数init是我们Serlvet生命周期中重要的初始化方法,serlvettomcat-init带参数的方法一定会被tomcat执行 不带参数init()方式才是开发者真正需要自己去完成的逻辑代码!
3.Servlet中的config对象
ServletConfig对象:配置对象-在某个Servlet配置里面去配置一些参数 FirstServlet org.westos_01.FirstServlet 初始化参数初始化的参数名称 参数值 Servlet程序中获取ServletConfig对象: -一个serlvet对应一个ServletConfig对象 ServletConfig config = this.getServletConfig() ; 获取参数的方法: String value = config.getInitParam(“参数名称”) ; //通过参数名称获取参数值 getInitParamNames() :获取当前所有的参数名称-返回的是一个Enumation
4.Servlet中的context对象
ServletContext对象---web工程--网站-只有一个全局的上下文对象:ServletContext 作用: 1) 配置全局参数- 如何获取ServletContext对象 在GenericSerlvet-public SerlvetContextgetServletContext(){ context = this.getServletConfig().getServletcontext() ; return context ; } 简写方式: ServletContext context = this.getServletContext(); 2) 作用2:获取上下文路径 在重定向中应用最广 response.sendRedirect(“/web工程名称/adv.html”) ; //硬路径 String path = context.getContextPath() ; //当前web工程的项目名称:/web工程名称 response.sendRedirect(request.getContextPath+“/adv.html”) 3) 作为域对象: a) HttpServletRequest:请求对象 b) ServletContext:上下文对象 c) HttpSession:session对象 setAttribute(“参数名称”,参数值(Object obj)’);将参数保存在域对象中 getAttribute(“name”):从域对象获取参数,通过参数名称获取参数值
5.请求转发和重定向
1) 重定向: a:重定向(浏览器行为)跳转页面的时候,地址栏发生变化 b:一次重定向有2个请求对象 c:重定向是可以跳转到外部工程的资源文件中 d:request域对象可以获取到参数数据 /* response.sendRedirect(request.getContextPath()+"/项目下的其他资源"); */ 2) 请求转发: a:请求转发(服务器行为)跳转页面的时候,地址栏不发生变化 b:请求转发,只有1次请求 c: 使用请求转发,它只能转发到当前项目下的资源文件中,不能转发到外部工程里面 d:使用rquest域对象获取不到参数数据 请求转发的简写方式: /** 请求转发的简化方式 */ request.getRequestDispatcher("/hello.html").forward(request, response);
6.cookie技术
Cookie技术: 数据保存浏览器端的 使用cookie技术获取参数数据: 1) 创建Cookie对象, public Cookie(java.lang.String name, java.lang.String value) 参数1:表示cookie名称 参数2:表示cookie名称对应的内容 2) 发送cookie数据(服务器发送cookie数据到浏览器中) set-cookie:请求头: 携带内容(最基本的方式) 简写方式:服务器发送Cookie void addCookie(Cookie cookie) 3) 服务器会携带cookie到浏览器(自发:浏览器自发的将cookie保存起来),方便下一次服务器传递数据 4) 服务器获取cookie数据 原理:获取的请求头:cookie名称获取内容(最基本的) 简写方式: Cookie[] getCookies()
cookie技术的一些细节 1) 细节1:当前浏览器中发现中文cookie 数据,获取cooike名称对应的内容,需要进行解密(同时,对中文进行加密) 使用的是两个工具类:URLEncorder类和URLDecorder类 2) 细节2:设置cookie的有效时间 public void setMaxAge(int expiry) : 参数分为三种情况: 1) 如果参数为正整数,表示多少秒之后,cookie数据失效了(不存在了) 2) 如果参数是一个负整数,一般情况指定-1,关闭浏览器,cookie就不存在了 3) 如果参数是一个0,那么指定同名的cookie的名称,然后该cookie数据会被删除掉! 4) 细节3:cookie的有效路径 public void setPath(java.lang.String uri):当前cookie的数据是在有效路径下才会起作用,否则,获取不到cookie数据 一般情况:一个站点可以存储多少个cookie数据,不超过300个,可能用到20个作用
7.session技术
本身在HttpServletRequest对象中就存储在一个方法:HttpSession getSession():创建或者获取session对象
Session原理
1)服务器解析doGet(),创建了Session对象,会给session分配一个唯一的JESSIONID(地址值) 2)服务器会将JESEESIONID发送到浏览器端, 3)在浏览器端会将JESEESIONID作为cookie存储 4)服务器端通request.getSession()对象,获取的是JESSIONID这个session的内存地址(唯一标识的ID) session对象始终是在服务器端存储,当我们服务器挂掉了或者启动失败了(500),session对象就会从服务器内存资源中消失掉!
可以作为域对象, 保存数据:setAttribute(“数据名称”,”数据的内容”) 获取数据:getAttribute(“数据名称”) ;
session对象的一些操作
创建Session对象 request.getSession(ture); 获取Session对象 request.getSession(false); 设置Session对象的值 request.setAttribute("name","value"); 获取Session对象的值 String value=(String)request.getAttribute("name"); Session对象的销毁 void invalidate():直接将sesison对象删除掉
session数据的有效时间
第一种修改方法: 在web.xml文件中配置 默认情况下:session的有效时间30分钟 设置session对象过期时间 1 第二种方法: 手动设置JSESSIONID的有效时间(将JSESSIONID作为cookie名称使用服务器发送) //创建一个Cookie对象 Cookie c = new Cookie("JSESSIONID", session.getId()) ; //cookie的细节:设置它的有效时间 c.setMaxAge(1*30*24*60*60); //服务器发送cookie数据到浏览器端 response.addCookie(c);
上一篇: SpringBoot——创建项目