Servlet小结
Servelt配置
一个web项目最终要放在tomcat-9.0.60\webapps\下面; 项目中要有WEB-INF这个文件里面存放一些配置信息。 ⭐HTML的文件只能放在项目文件下,WEB-INF文件外。
web.xml中的配置方法
classes中类的实现方法
-
1、在配置文件中加路径
-
2、在HTML页面中通过超链接访问
-
访问实现过程
@WebServlet(name = "RegServlet")使servlet类能够被访问到。
JSP概念
相当于一个界面形式的Servlet
请求对象和响应对象
请求对象
-
请求对象获得请求参数
-
参数传递的三种方式
-
a链接、url传递参数
直接传递参数; a链接、url传递参数一定进入到是doGet方法;
-
表单传参
请求方式为get的form表单,action属性后不能带参数!!
这是因为浏览器会将表单中的数据封装为字符串,例如会将上面的address和sex属性封装为address=Beijing&sex=male,然后将其直接附加在action的URL之后,URL和封装后的字符串之间会有一个‘?’分隔。如果在表单的action属性中已经包含了参数,浏览器会直接将其过滤掉,再附加form表单数据。
-
隐藏域传参
<input type="hidden" name="type" value="add" />
-
-
doGet和doPost
性质: post:相当于把请求对象放到请求对象响应头里面; get:相当于把请求对象放到url中,一般除了form表单的链接,其他都是doget;
安全性上: get:直接显示在地址栏上,不安全 post:存放在请求头中,比较安全;
提交内容大小: get:由于信息只能通过地址栏,内容较少 post:内容多
编码问题处理: url及post中的默认编码格式都是ISO-8859-1; post: 设定请求对象的编码方式的时候一定要在最前面设定(先设定编码方式)。 get: 设定请求对象的编码是不起作用的,手动编码。
form表单中的?传参: get不能传参,post可以。
-
中文乱码的解决
Get方式基于tomcat
1、对于post设定请求对象和响应对象的编码(request.setCharacterEncoding("utf-8");设置编码这一句必须放到所有获取参数动作之前), 对于get手动强制转码(name= new String(name.getBytes("ISO-8859-1"),"UTF-8");) 2、修改tomcat中url的编码(一劳永逸) Connector URIEEncoding = "UTF-8"
响应对象
-
响应对象介绍
-
重定向和请求转发
重定向:地址栏发生变化;(请求两次) 请求转发:地址栏不发生变化(请求一次)
重定向的数据在第二次的时候不能传递过去。
-
request的attribute的使用
信息共享区域(键值对的模型): 1、request(两个方法:1、setAttribute(放入request);2、getAttribute(从request中得到);) request共享区域时效性短,针对单次请求,session时效性强,针对多次请求。
信息共享域的使用前提是处于同一个信息共享域,重定向经历了多次请求,不再是同一个信息共享域,而请求转发是同一个信息共享域。
servlet作用域
servlet生命周期:加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求处理(服务阶段)—>销毁 跳转过程中实现信息共享模型
HTTP无状态协议
会把每一次请求当作一次新的请求
session
用户打开浏览器,点击多个连接,访问多个资源,关闭浏览器,整个过程称之为一次会话。
-
会话技术
保持浏览器和服务器进行会话过程中的一些数据———信息共享区域。
-
session
-
cookie
-
-
session的常见方法及使用
session是有访问时效的(默认30分钟)。 结束会话:invalidate();
-
会话ID
第一次使用会产生会话ID,通过响应发回给客户端,客户在以后的每一个请求过程中都会携带这个会话ID。
cookie
服务器发送给客户端的数据,是客户端和服务器之间交换的一下端数据,客户不用接入。
cookie在服务端创建,保存在客户端,客户端会自动携带cookie信息去访问服务器。 cookie以键值对的形式存在,一个web应用可以有多个cookie,一个cookie只有一个键值对(即一个cookie就是一个信息)。 cookie可以被多个浏览器共享。
应用:自动登录、浏览数据
session的存在是基于cookie的;服务器会将session的id自动发送给客户端,客户端会自动携带session id去向服务器要同一个session共享区域。
servletContext
作用范围最广,代表当前整个web应用,针对整个web应用的信息共享区域,被所有的客户端共享。 web服务器一启动的时候,就会为每个web应用创建一个对应的servletContext对象。
web.xml中的<context-param>中的内容最终就会变成servletContext中的内容。
-
servletConfig
一个servlet对应一个servleConfig。
过滤器
生命周期
init()和destory()方法跟Servlet是一样的。只有在Web服务器加载和销毁的时候被执行,只会被执行一次!
调用顺序
使用注解的方式,调用顺序与过滤器名字有关,从小到大调用过滤器; 使用web.xml配置方法,调用顺序与文件中出现的先后顺序有关,与名字无关。
监听器
-
ServletContextListener - 监听ServletContext对象的创建和销毁的过程
-
HttpSessionListener - 监听HttpSession对象的创建和销毁的过程
-
ServletRequestListener - 监听ServletRequest对象的创建和销毁的过程
-
ServletContextAttributeListener - 监听ServletContext的保存作用域的改动(add,remove,replace)
-
HttpSessionAttributeListener - 监听HttpSession的保存作用域的改动(add,remove,replace)
-
ServletRequestAttributeListener - 监听ServletRequest的保存作用域的改动(add,remove,replace)
-
HttpSessionBindingListener - 监听某个对象在Session域中的创建与移除
-
HttpSessionActivationListener - 监听某个对象在Session域中的序列化和反序列化
-
本文作者:今晚da老虎
本文链接:https://www.cnblogs.com/CS-hhgo/p/16312912.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步