Java全栈学习笔记36
# Servlet
特点: 可以内嵌HTML代码
servlet也可以认为是一个页面
jsp java server page java服务器页面。特点:可以内嵌java代码
jsp 就是servlet。jsp的页面中存在很多代码,html,css,java,js 页面维护相对困难。
jsp 先转译为java文件,所以在首次运行jsp的时候,比较慢
## Servlet中的方法
getInitParameter("name") 根据指定名称获取serlvet初始化时的参数
getInitParameters() 获取servlet初始化过程中的所有的参数名
### HttpServletRequest
#### 请求行
getMethod() 获取当前请求方法
getRequestURI() 获取当前请求的资源部分。
getQueryString() 获取路径中的参数部分。也就是路径中?后面的所有内容
getProtocol() 获取请求的协议名和版本
getContextPath() 获取当前应用的上下文路径,也就是项目根路径的名称
getPathInfo() 额外的路径参数
getServletPath() 获取servlet的名称或者所映射的路径
#### 获取网路信息
getRemoteAddr() 获取发出请求的客户机的IP地址
getRemotePort() 获取发出请求的客户机的端口号
getLocalAddr() 接收请求的Ip地址
getLocalPort() 接收请求的端口号
getLocalName() 接收请求的主机名
getServerName() 当前请求所指向的主机名
#### 获取请求头
getHeader("name") 根据名字获取请求头
getHeaderNames() 获取所有请求头的名字
getHeaders("name") 获取同名字的多个请求头,值之间使用`,`隔开
getCharacterEncoding() 获取字符集
getContentType() 获取请求的内容类型
#### 获取请求参数
getParameter("参数名") :根据参数的名字获取参数的值
getParameterValues("参数名") 获取一个key对应多个值
getParamenterNames() 获取所有的参数名
getParameterMap() 返回参数名:参数值[] Map<String, String[]>
getInputStream() 通过流的方式获取数据。但是要求请求方式得是post,
form表单的属性enctype="multipart/form-data"
<form action="hello2" method="post" enctype="multipart/form-data">
</form>
## 发送请求
如何发送请求
跳转 发送的get请求
a标签的跳转
location.href
form表单,通过method属性控制请求方式:get/post
ajax asychronous javascript and xml 局部刷新,不是页面整体刷新
异步的js和xml
请求
同步
异步:异步的交互
js 一个对象 XMLHttpRequest();
const xhr = new XMLHttpRequest();
xhr.open("post","hello");
xhr.send()//发送请求
open("请求方法","路径",是否异步[,user,password])
onreadystatechange 事件 监控请求的状态
send() 发送请求
setRequestHeader() 设置请求头
responseText 获取服务器端响应的文本
responseXML 获取服务器端响应的XML格式的文本
readyState xhr对象的状态码:
0: 请求建立
1:打开请求
2: 发送请求
3:服务器端接收到响应
4:客户端成功接收到响应
status : 返回请求的状态码
200:请求成功
post方式提交数据时,普通数据需要设置请求头
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
提交二进制数据,不需要设置Content-Type。使用js的对象FormData;
const formData = new FormData();
formData.append("userName",userName.value);
formData.append("password",password.value);
formData.append("age",age.value);
formData.append("hobbies",hobby);