在这快节奏的时代,学着慢慢来|

今晚da老虎

园龄:2年10个月粉丝:0关注:1

2022-05-26 11:34阅读: 17评论: 0推荐: 0

Servlet小结

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以键值对的形式存在,一个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配置方法,调用顺序与文件中出现的先后顺序有关,与名字无关。

监听器

  1. ServletContextListener - 监听ServletContext对象的创建和销毁的过程

    1. HttpSessionListener - 监听HttpSession对象的创建和销毁的过程

    2. ServletRequestListener - 监听ServletRequest对象的创建和销毁的过程

    3. ServletContextAttributeListener - 监听ServletContext的保存作用域的改动(add,remove,replace)

    4. HttpSessionAttributeListener - 监听HttpSession的保存作用域的改动(add,remove,replace)

    5. ServletRequestAttributeListener - 监听ServletRequest的保存作用域的改动(add,remove,replace)

    6. HttpSessionBindingListener - 监听某个对象在Session域中的创建与移除

    7. HttpSessionActivationListener - 监听某个对象在Session域中的序列化和反序列化

本文作者:今晚da老虎

本文链接:https://www.cnblogs.com/CS-hhgo/p/16312912.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   今晚da老虎  阅读(17)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起