servlet

本文介绍了Web开发中的基本概念,包括Web服务器如Tomcat的部署,前端(HTML,CSS,JavaScript)与后端(Servlet)的交互,HTTP协议的工作原理,以及会话追踪和跨域问题的解决方案。还涉及了过滤器在请求处理中的角色,以及如何利用token进行安全的身份验证。
摘要由CSDN通过智能技术生成

web开发概述

Web服务器是指驻留于因特网上某种类型计算机的程序

可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览; 它是一个容器,是一个连接用户与程序之间的中间件

Web服务器有很多,流行的WEB服务器有Tomcat 、 WebSphere 、 WebLogic、Jboss等。

web前端:html,css,javascript,vue.js,ElementUI

web程序:网页(界面)服务器

前端作用

1.让用户输入数据

2.显示数据

web开发环境搭建

步骤

1.搭建后端服务器

2.前端向后端发送请求

3.后端处理,向前端进行响应

4.在前端动态显示数据

搭建后端服务器

以前的java程序都是在本地运行,在idea执行main()开始运行

从javaEE开始,后端程序都运行在服务器上

现在电脑上安装一个web服务器,把开发的java程序部署在服务器中,从前端通过网络访问

服务器

广义上讲:硬件+软件

狭义上讲:软件,是一款程序,里面部署资料(网页,java)

外界可以访问服务器中的文件,访问到之后,就可以向访问者响应文件

安装一款免费的有apache提供的服务器--tomcat服务器

下载

解压

配置环境变量(JAVA_HOME,可以自动根据JAVA_HOME自动找到jdk)

进入tommcat安装文件的bin目录,找到startup.bat启动tomcat

创建一个web后端项目,并将项目部署到tomcat中

1.创建一个java项目

2.为项目添加web功能

3.在idea中集成tomcat进来,并将web后端的项目部署到tomcat中

创建web后端程序(javaEE)

HttpServlet是javaEE中的一个类,servlet处理类必须继承此类,这样就具备了servlet程序功能,启动服务器时就会加载这些类

Servler创建和使用-Servlet配置

Servlet是Server Applet的简称,意思为用Java编写的服务器端的程 序. 它运行在web服务器中,web服务器负责Servlet和客户的通信以及调 用Servlet方法。 

Servlet的作用:

1.接收用户发送的请求数据

2.调用其他的java程序来处理请求

3.根据处理结果,将结果响应给客户

搭建servlet程序:

1.搭建一个类集成HttpServlet

2.重写方法

3.在web.xml文件中配置servlet

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被 外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文 件中使用<servler>元素和<servlet-mapping>元素完成

<servlet>元素用于注册Servlet,它包括两个主要的子元素

<sevlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和完整类名

一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定 Servlet的注册名称和Servlet的对外访问路径。

url-pattern配置模式:”/”代表当前web应用的根目录

Web.xml文件为web应用的配置文件,它必须放在web应用目录WEB-INF目录下。 

Web.xml文件用于对web应用下的web资源进行配置,服务器在启动时会读取web.xml文件中的内容

Servlet生命周期

实例化

无参构造方法,初始化创建的对象

在第一次访问这个servlet时或服务器启动时,被调用,只调用了一次

初始化

init方法:在构造方法执行后,紧接着来实行,用来初始化servlet,只调用了一次,如果没有初始化需要,也可以不重写,会调用父类中的init方法

服务

service方法:提供服务,每次访问servlet程序都会执行,多次执行,提供一个用来封装请求和一个用来封装响应的对象

消亡

destory方法:在服务器关闭时会被调用,可以在服务器关闭时执行一些必要的操作,此方法在我们的类中可以不重写(调用父类中的destory方法)

http协议

超文本传输协议 (HyperText Transfer Protocol)服务器传输超文本 到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于 定义客户端浏览器和服务器之间交换数据的过程

HTTP是一个基于TCP/IP通信协议来传递数据,客户端与服务器交互必须建立连接

HTTP是一个属于应用层的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统.

浏览器连接服务器时,向服务器发送请求,称为http请求

一个http请求包含三个部分

请求行:请求的地址,http版本,状态码,都是由浏览器自动处理

请求头:包含主机地址,客户端的一些环境信息,以键值对的形式传递

请求体:表单post方式提交的数据区域,以键值形式传递

http请求分为GET请求方式和POST请求方式

GET:超链接请求,地址栏直接访问,主要用于从服务器端获取数据,向服务器端传输数据量小,且在地址栏显示

POST:表单post方式提交数据,主要用于从前端向后端传输大量数据(可上传文件),数据存放在请求体中,相对安全

请求和响应是Web交互最基本的模式,在Servlet中,用HttpServletRequest 来表示请求。HttpServletRequest :封装了请求的信息,可以从中获取任何请求信息

getParameter(name) --- String 通过name获得值

 getParameterValues --- String[ ] 通过name获得多值

处理中文乱码 post setCharacterEncoding(编码格式)

getMethod()得到客户机请求方式

getScheme()请求协议

getRemoteAddr()返回发出请求的客户机的IP地址

getServerName()服务器名(ip或域名)

getServerPort()服务器端口

http响应

一个http响应代表服务器向客户端回送的数据,它包括:响应行,响应头,响应体。

响应行里包含了http协议版本,以及用于描述服务器对请求的处理结果。

HTTP/1.1 (协议版本) 200(状态吗) OK(状态码描述)

状态码:服务器和浏览器用于确定状态的固定数字号码

200:请求成功

302:请求重定向

400:语义有误,当前请求无法被服务器理解或请求参数有误

404:请求资源不存在,通常是路径写错了或者服务器资源删除了

500:服务内部错误(代码异常)

响应头用于描述服务器的基本信息,以及数据描述

响应体代表服务器向客户端浏览器回送的正文

Web服务器收到客户端的http请求,会针对每一次请求,分别创建 一个代表响应的HttpServletResponse对象。

HttpServletResponse对象代表响应

用getWriter()获得一个PrintWriter字符输出流输出数据

response会默认以ISO8859-1将需要输出到浏览器的字符进行解码, 如果输出的字符在ISO8859-1中不存在,就会导致乱码问题。

 response.setContetnType("text/html;charset=utf-8");方法 可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码

过滤器

Filter也称之为过滤器,在请求进入servlet之前,可以配置那些请求进入到指定的过滤器,完成一些公共的处理,对服务器web资源进行拦截(权限控制,通过拦截资源进行权限控制,是否可以访问)

Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实 现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人 员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截

Servlet API 中,与过滤器有关的API共有三个接口,分别是

 Filter

FilterChain

FilterConfi

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

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

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

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

该接口类型作为Filter接口中doFilter方法的参数使用。FilterChain接 口中有一个方法 doFilter(ServletRequest request,ServletResponse response), 该方法可以将当前的请求和响应传递到过滤链上的下一个资源,可能 是下一个过滤器,也可能是目标资源

作用

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

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

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

前端发送请求

1. 表单向后端发送请求,属于同步请求
同步:发送一个请求,给一个回应,会用回应的内容覆盖掉浏览器中原来的内容
这样会打断前端其他的正常操作,在现在的前端中不太友好

2. 异步请求
异步:不同步  前端正常输入时可以同时与后端进行交互,后端相应的数据不会影响前端正常操作
可以使用一个js中提供的对象,向后端发送请求,服务器响应的内容,会被js对象接收
然后在js中,用接收到内容的,局部的更新网页,这样整个过程页面不会出现刷新,覆盖操作,不会打断页面的正常操作

前后端交互中出现一个跨域问题:

在前端的服务页面中(8848),接受后端服务器(8080)响应的数据
使用ajax技术前后端交互,前端默认会阻止,不让前端的服务接收其他后端的数据
为了安全性
协议,域名,端口有一个不相同就是跨域问题
跨域问题解决:前端解决,后端解决:在响应头中设置说明,告知浏览器,此次的响应是安全的

web会话追踪

会话

从从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这 个服务器结束,被称为一个会话.

目的

因为 HTTP 请求是无状态的;只有当用户发出请求时,服 务器才会做出响应,客户端与服务端之间的联系是离散的、非连续的;如果用户想在同一个网站的多个页面之间转换时,无法确定是否是同一个用户;对会话进行跟踪就是为了解决这样的问题。 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话过程。

给客户端们颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了.

token

token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后, 服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来 请求数据即可。token保存在客户端,并且进行了加密,保证了数据的安全性.

①登录 向后端发送账号和密码
②后端与数据库连接验证账号密码
③如果账号正确,在后端生成一个token(令牌 唯一的),把token响应给前端
④在前端存储token
⑤之后的每一次请求,都将token携带者向后端发送
⑥后端的java对请求中的token进行解析验证 

添加响应拦截器

axios.interceptors.response.use((resp) => { 
	if (resp.data.code == 500) {
		ElementUI.Message({
			message: resp.data.message,
			type: "error"
		})
	}
	if (resp.data.code == 401) {
		ElementUI.Message({
			message: "token验证失败",
			type: "error"
		})
		router.replace("/login");
	}
	return resp;
})

对编码进行验证,根据编码返回响应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值