Servlet

文章目录

Servlet

服务器

狭义:指的是一种软件,里面可以存放文件,别人可以访问,服务器可以做出回应广义:硬件+软件(云服务器机房)

它是一个容器(部署项目),是连接用户与程序之间的中间件

web环境搭建

1、下载安装Tomcat

解压、设置Java_HOME环境变量(依赖于JDK,根据JAVA_HOME找到jdk)

​ 启动服务器(进入到bin目录中 startup.bat)、访问服务器(ip+端口 127.0.0.1:8080)

​ 关闭服务器(bin shutdown.bat)

tomcat文件夹:bin 启动关闭的命令 logs 日志文件 work 工作目录

​ conf tomcat配置文件 temp 临时文件

​ lib 运行的jar包 webapps 发布web项目的

2、创建web项目

​ 添加web依赖(web-WEB-INF-lib.web.xml)

3、发布web项目到服务器

​ 把Tomcat集成到IDEA中

Servlet==java EE

servlet applet==用java写的服务器端程序

作用:接收客户端请求、调用其他程序处理dao jdbc、根据处理的结果向客户端作出响应

web.xml 是web项目中的配置文件,在服务器启动时,由服务器加载读取

配置注册servlet

<servlet>
<servlet-name>demo</servlet-name>//生成的对象名只有一个,只创建一个servlet对象
<servlet-class>***</servlet-class>//配置类的地址,由服务器来创建Servlet对象,通过反射机制创建
<load-on-startup>0</load-on-startup>//配置服务器启动时,创建Servlet对象为Servlet提供一个前端访问地址
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>//定义一个请求地址
</servlet-mapping>

servlet的生命周期

http协议(应用层)

基于TCP(传输层)/IP 通信协议传输数据

前端网页:

action=“后端地址” method="post /get"请求方式

在网页中点击超链接,提交表单都是向服务器端发送http请求

一个http请求,包含3个部分:

请求头:包含请求地址,方式.客户端信息···由浏览器发送完成

请求行

请求体:post请求中的数据都在请求体中

get:主要用于从服务器端获取数据,传递少量的数据,获取大量数据

post:主要用于向服务器发送数据,注册,登录提交表单

get 数据在地址中拼接携带的,一个是不安全(相对于post),传递的数据量小

post 数据在请求体中存储,相对安全,且传输的数据量大,上传文件都是post

​ 超链接是get,表单post

构造方法 默认存在 init().service().destroy() 父类有

在servlet中常用doGet和doPost

处理get请求

@Override

protected void doGet(HttpServletRequest req,HttpServletResponse resp)······{

}

处理post请求

@Override
protected void doPost(······){

}

HttpServletRequest对象表示请求,所有请求数据都包装在此对象中

HttpServletRequest是接口,谁来实现?是由某个子类实现。

现在直接通过submit提交表单到后端服务器,这种方式属于同步提交,服务器响应回来的内容会将整个网页覆盖,会影响前端网页中的正常操作

在现在的前后端分离开发模式后,前端向后端发送请求,都是异步发送

何为异步发送?

异步发送本质是使用浏览器中提供的一个js对象,就是XMLHttpRequest.

使用此对象异步向服务器发送请求,后端响应的内容会反馈给XMLHttpRequest对象,再从js中把响应的内容更新到网页的某个标签上,整个过程页面不会被覆盖,不会刷新

前后端分离开发,前端一个服务器,后端是另一个服务器

在发送ajax请求时,浏览器有一个安全限制(默认是遵守同源策略)

只要请求协议,域名/ip,端口有一个不同,就被视为跨域访问(跨服务器访问)

解决办法:前端解决,后端解决:在响应类中,向前端响应一个允许接收的标志

如何将后端更多的信息传递到前端

json是一种轻量级的数据交换格式,已经成为前后端数据交换的规范

java对象——json格式(字符串)——前端js(转为js对象)

过滤器

Filter也称之为过滤器,通过 Filter技术,对web服务器管理的所有web资源:例如Servlet, 从而实现一些 特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信 息等一些高级功能。

作用:对服务器web资源进行拦截(权限控制,通过拦截资源进行权限控制,是否可以访问)

Filter接口是过滤器类必须实现的接口,该接口中有三个方法:

init(FilterConfig filterConfig):该方法是对filter对象进行初始化 的方法,仅在容器初始化filter对象结束后被调用一次。参数 FilterConfig可以获得filter的初始化参数。

doFilter(ServletRequest request, ServletResponse response, FilterChain chain):该方法是filter进行过滤操作的方法,是最重要的方法。过滤器实现类必须实现该方法。方法体中可以对request 和response进行预处理。其中FilterChain可以将处理后的request 和response对象传递到过滤链上的下一个资源。

destroy():该方法在容器销毁过滤器对象前被调用。

过滤器用来实现通用的功能,减少代码冗余,提高可维护性。

一个过滤器可以配置给多个资源使用 。

一个资源也可以配置多个过滤器,按照配置顺序调用。

web会话跟踪机制

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结

束,被称为一个会话。

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用

的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份, Session通过在服务器端记录信息确定用户身份。

Session是另一种记录客户状态的机制,它在用户第一次打开浏览器连接到后端服务 器时,由服务器创建产生,生成一个id号,作为会话标识。服务器通过Cookie将生成的会话id响应到浏览器中,之后每次请求将浏览器端的会话 id向服务器端提交,服务器就可以得知是哪个客户端发起的请求。

session

Servlet API中,定义了HttpSession接口,用来封装会话对象。

HttpSession是接口,会话对象是Web容器创建的,在Servlet中使用 HttpServletRequest中的方法获得会话对象。

public HttpSession getSession():获取跟当前请求相关的 session,如果不存在session,就创建一个新的session对象返回。

使用session实现会话机制的过程 :

1.当容器创建一个新的HttpSession对象后,即生成一个随机数,称为

会话ID,并将ID值封装成一个名字为JSESSIONID的session,返回给

客户端。

2.调用request.getSession方法获得会话对象时,容器先从request

中获取JSESSIONID值,根据JSESSIONID值查找到对应的会话对象,

返回使用。

3.如果没有获取到JSESSIONID值,认为当前的请求没有相关联的会话

对象,重复步骤1。

会话对象生命周期 :

会话对象是容器创建的,并保存在容器中,如果客户端连接到服务器后,不做任何操作,那么容器维护这些会话对象将占用很多资源。因此,容器会在默认时间内销毁会话对象,多数容器默认30分钟销毁会话对象。

还可以调用HttpSession中的invalidate 方法,使会话失效,立即销毁会话对象。

Cookie

cookie是保存会话数据的一种技术,其容量有 限;有生命周期,根据需求设置cookie有效期如果不进行设置的话,数据保存 至浏览器关闭。

Cookie中的信息存储在浏览器中,用于从服务器端向客户端响应一些相关数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值