JavaEE——servlet

目录

        1.Web开发概述

2.Web开发环境搭建

3.servlet(Server Applet)

4.Http协议(Hyper Text Transfer Protocol)

5.Http请求

6.Http响应

7.Ajax(Asynchronous JavaScript and XML)

8.跨域

9.Web会话跟踪机制

10.过滤器(Filter)


1.Web开发概述

web开发将开发的程序部署在服务器中,通过浏览器访问(http请求),在java后端开发接收,处理,响应

a:什么是服务器?

狭义:指的是一种软件,里面可以存放文件,别人也可以访问,服务器可以作出响应

广义:硬件(云服务器机房)+软件

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

b:Apache软件基金会(Apache Software Foundation )

专门为运作一个开源软件项目的Apache的团体提供支持的非盈利性组织,Apache的tomcat服务器是一款免费的,支持java程序的小型服务器

2.Web开发环境搭建

下载安装tomcat—解压—设置Java_Home环境变量(JDK的路径)—启动服务器(进入bin目录中运行startup.bat)—访问服务器(IP+端口)—关闭服务器(bin目录中运行shutdown.bat)

创建并发布Web项目:创建java项目,添加Web功能

发布Web应用到服务器(自动将Web应用到Web到服务器下,需要在开发环境工具中tomcat进来)

3.servlet(Server Applet)

servlet:用javab编写的服务器

作用:接收用户发送的请求数据

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

根据处理结果向客户端做出响应

web.xml是web项目中的配置文件,在服务器启动时,由服务器加载读取,必须放在WEB-INF目录下

继承HttpServlet,我们的类就具备servlet功能(接收,处理,响应)

在web.xml中注册servlet,生成的对象名,只有一个,只创建一个servlet对象,

配置类的地址,由服务器来创建servlet对象,通过反射机制创建

生命周期:

a.构造方法 服务器在创建servlet对象时,调用构造方法,在第一次访问servlet或者服务器启动时,创建servlet对象,调用构造方法,只调用了一次;

b.init 初始化servlet,servletconfig用来获得servlet中的一些参数信息,如果没有什么可以初始化的内容,此方法可以不用重写,但是服务器会调用,只是会调用父类中的init();

C.service 提供服务,每次请求都会调用

里面有两个参数:HttpServletRequest 表示请求,客户端提交的数据,都封装在此对象中

HttpServletResponse 表示响应,用来为客户端响应数据

d.destroy 在servlet对象销毁前,会调用destroy(),一般是在关闭服务器,在此方法中,可以执行一些最终想要的操作,例如保存日志.......,如果没有,也可以不用重写,但是服务器还会调用,可以调用父类中的。

4.Http协议(Hyper Text Transfer Protocol)

客户端浏览器和服务器之间交换数据的过程

5.Http请求

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

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

请求行:http请求方式,请求资源名称,http版本

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

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

get方式:主要用于从服务器端获取数据,传递少量的数据,获取大量的数据,数据在地址中拼接携带的,是不完全的(相对于post)

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

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

                post请求中文接收时解码格式不是utf-8,接收前设置解码格式:

req.setCharatcterEncording("utf-8")

超链接是get请求

直接通过submit提交表单到后端服务器,这种方式属于同步提交,服务器响应回来的内容会将整个网页覆盖,会影响前端页面中的正常操作,在现在的前后端分离开发模式后,前端向后端发送请求,都是异步发送

何为异步发送?

异步发送本质是使用浏览器中提供的一个js对象,就是XMLHttpRequest,使用此对象异步向服务器发送请求,后端响应的内容更新到网页的某个标签上,整个过程页面不会被覆盖,不会刷新

getmethod()                             得到客户机请求方式
getScheme()                             请求协议
getRemoteAddr()                         返回发出请求的客户机的IP地址
getServerName()                         服务器名(IP或域名)
getServerPort()                         服务器端口
getParameter(name)--string              通过name获得值
getParameterValues--string              通过name获得多值

前后端分离开发,前端一个服务器,后端是另一个服务器,在发送ajax请求时,浏览器有一个安全限制(默认是遵守同源策略)

6.Http响应

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

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

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

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

200:请求成功

302:请求重定向

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

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

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

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

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

7.Ajax(Asynchronous JavaScript and XML)

异步JavaScript和XML

使用Ajax,可以无刷新状态更新页面,并且实现异步提交

axios框架

get请求:
    axios.get('/user?ID=12345')
         .then(function (response) {
              console.log(response); 
         }) 
post请求:
    axios.post('/user', “name1=value1&name2=value2”) 
          .then(function (response) { 
              console.log(response); 
          })

响应结果格式

   axios.get('/user/12345') 
         .then(function(response) {
             console.log(response.data);//后端返回数据,默认为json格式 
             console.log(response.status); 
             console.log(response.statusText); 
             console.log(response.headers); 
             console.log(response.config); 
         })

借助游览器存储用户信息

localstorage.setItem("k","v")     将数据可以长期存储在浏览器中,即使浏览器关闭了,也存在
sessionStorage.setItem("account",req.data.account) 在一次会话中存储数据,浏览器关闭,数据就消失了

8.跨域

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

为什么要限制跨域访问?————因为安全问题,如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题

解决办法————前端解决,后端解决:在响应头中,向前端浏览器响应一个允许接收的标志

如何将后端更多的信息,传递到前端去,json是一种轻量级的数据交换格式,已经成为前后端数据交换的规范,

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

axios可以直接将后端相应的json字符串转为js对象

9.Web会话跟踪机制

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

(1)会话(session)

用来跟踪用户的整个会话,常用的会话跟踪技术是cookie和session

cookie:通过在客户端记录信息确定用户身份

session:通过在服务器端记录信息确定用户神扥

req.getSession():获得session,第二次请求中,没有会话id,新建一个会话对象,之后的请求中,如果没有会话id,去找对 应id的session对象

session.setAttribute("user",user) 在后端的session对象中存储用户信息,服务器会响应会话id

登陆成功后,开始了与后端服务器的会话,此时生成HttpSession对象

session.getMaxInactiveInterval() session对象最大有效非活动时间,以秒为单位,tomcat默认是30分钟不使用,就会销 毁session

session.getId() 获得session对象的编号

session.isNew() 判断一个session是不是一个新创建的会话对象、

(2)会话对象(HttpSession)

session对象用于在服务器端存储用户信息,会话id作为客户端与服务器之间身份识别

会话对象生命周期:开始与成功连接到后端服务,使用req.getSession()获得

销毁:

a.服务器关闭

b.到达最大的非活动时间,服务器会销毁

c.退出时,强制销毁session invalidate()

10.过滤器(Filter)

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

servlet API中,与过滤器有关的API共有三个接口,分别是:Filter,FilterChain,FilterConfig

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值