小企业网站免费建设,一流的龙岗网站设计,搭配服装网站源码,公司网站需要备案10/10/2023 近期总结#xff1a; 最近学的后端部署#xff0c;web服务器运行#xff0c;各种请求响应#xff0c;内容很多#xff0c;学的很乱#xff0c;还是需要好好整理#xff0c;前面JavaSE内容还没有完全掌握#xff0c;再加上一边刷题#xff0c;感觉压力很大哈… 10/10/2023 近期总结 最近学的后端部署web服务器运行各种请求响应内容很多学的很乱还是需要好好整理前面JavaSE内容还没有完全掌握再加上一边刷题感觉压力很大哈哈。看群友们都在说找工作难又会被打击不过感觉一切都以实力说话提升自己比什么都有说服力继续加油 一、HTTP请求
从前端网页中可以向后端发送HTTP请求 1在浏览器地址栏输入后端地址
2超链接向后端发送http请求
3表单向后端发送http请求。
一个http请求包括请求头请求行请求体
http请求方式
POST请求从客户端向后端发送大量数据。数据在请求体中存放相对安全数据无大小限制GET请求向后端发送请求携带少量数据从后端获取大量数据不安全传输数据量有限1~2Kb
http请求方法
servletRequest.setCharacterEncoding(utf-8);//设置请求正文的字符编码。它确保服务器使用 UTF-8 字符编码正确解释传入数据
String accountreq.getParameter(account);//接收请求中我们自己提交的数据
req.getMethod();//获得请求方法
req.getRequestURL();//获得客户端请求地址
req.getHeader();//获得请求头
req.getRemoteAddr();//获得客户端ip
二、HTTP响应响应行 响应头 响应体
响应状态码 200 请求成功 404 请求资源不存在 500 服务器内部错误代码异常 http响应方法
servletResponse.setContentType(text/html;charsetutf-8);//不仅发送到浏览器的内容会使用UTF-8编码而且还通知浏览器使用UTF-8编码方式进行显示
httpResponse.setHeader(Access-Control-Allow-Origin, httpRequest.getHeader(origin));//允许所有请求跨域
httpResponse.setHeader(Access-Control-Allow-Methods, *);//允许跨域的请求方法GET, POST, HEAD 等
httpResponse.setHeader(Access-Control-Allow-Headers, *);//允许跨域的请求头
httpResponse.setHeader(Access-Control-Allow-Credentials, true);//是否携带cookie
三、过滤器Filter
作用在请求进入到Servlet之前让请求进入过滤器进行统一处理。
例如可以对编码进行统一处理请求响应可以对权限验证进行统一处理....
以对编码处理过滤为例 1创建一个专门编写过滤器的文件夹创建.java文件编写专门处理编码问题的代码。
import javax.servlet.*;
import java.io.IOException;public class Encoding implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding(utf-8);//设置请求正文的字符编码。它确保服务器使用 UTF-8 字符编码正确解释传入数据servletResponse.setContentType(text/html;charsetutf-8);//不仅发送到浏览器的内容会使用UTF-8编码而且还通知浏览器使用UTF-8编码方式进行显示filterChain.doFilter(servletRequest,servletResponse);//继续向后执行后一个可能是下一个过滤器也可能是Servlet}
}2对web.xml进行配置为什么要配置web.xml原因很简单因为每次启动servlet时服务器都会首先读取web.xml文件这样过滤器才能被读取
filterfilter-nameEncoding/filter-namefilter-classcom.ffyc.webserver.filter.Encoding/filter-class/filterfilter-mappingfilter-nameEncoding/filter-nameurl-pattern/*/url-pattern
!-- /*代表所有地址均可进入过滤器 --/filter-mapping
四、前端向后端发送请求方式
1同步方式
在前端向后端发送请求后后端返回的内容会打断前端用户操作。
2异步方式不同步
后端响应回来的内容不会打断前端用户操作
异步请求已经成为前后端交互的标配 如何从前端向后端发送异步请求
1使用原生的js发送异步请求
!DOCTYPE html
htmlheadmeta charsetutf-8 /title/title/headscript srcjs/axios.min.js/scriptbodyform methodpostinput typetext placeholder账号 nameaccount onblurcheckAccount(this.value)span idmsgid/spanbrinput typepassword placeholder密码 namepasswordbrinput typesubmit value登录//formscriptfunction checkAccount(account){var reqobjnew XMLHttpRequest();reqobj.open(get,http://localhost:8088/webServer/LoginServlet?accountaccount);//准备请求reqobj.send();//发送请求reqobj.onreadystatechangefunction(){document.getElementById(msgid).innerHTMLreqobj.responseText;}}/script/body
/html2使用ajax框架网络请求库例如axious
Ajax可以无刷新状态更新页面解决了打断前端用户操作的问题实现了异步提交。 !DOCTYPE html
htmlheadmeta charsetutf-8 /title/title/headscript srcjs/axios.min.js/scriptbodyform methodpostinput typetext placeholder账号 nameaccount onblurcheckAccount(this.value)span idmsgid/spanbrinput typepassword placeholder密码 namepasswordbrinput typesubmit value登录//formscriptfunction checkAccount(account){axios.get(http://localhost:8088/webServer/LoginServlet?accountaccount).then(a{document.getElementById(msgid).innerHTMLa.data;})}/script/body
/html注意记得在后端添加过滤器
package com.ffyc.webserver.filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class CorsFilter implements Filter {public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletResponse httpResponse (HttpServletResponse) servletResponse;HttpServletRequest httpRequest (HttpServletRequest) servletRequest;//允许携带Cookie时不能设置为* 否则前端报错httpResponse.setHeader(Access-Control-Allow-Origin, httpRequest.getHeader(origin));//允许所有请求跨域httpResponse.setHeader(Access-Control-Allow-Methods, *);//允许跨域的请求方法GET, POST, HEAD 等httpResponse.setHeader(Access-Control-Allow-Headers, *);//允许跨域的请求头httpResponse.setHeader(Access-Control-Allow-Credentials, true);//是否携带cookiefilterChain.doFilter(servletRequest, servletResponse);}
}配置web.xml filterfilter-namecorss/filter-namefilter-classcom.ffyc.webserver.filter.CorsFilter/filter-class/filterfilter-mappingfilter-namecorss/filter-nameurl-pattern/*/url-pattern/filter-mapping