百度怎么做网站域名,网站支付页面怎么做,有没有网址发一下,商丘做网站一般多少钱1#xff0c;JavaWeb技术栈
B/S架构:Browser/Server#xff0c;浏览器/服务器架构模式#xff0c;它的特点是#xff0c;客户端只需要浏览器#xff0c;应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器#xff0c;获取Web资源#xff0c;服务器把Web资源…1JavaWeb技术栈
B/S架构:Browser/Server浏览器/服务器架构模式它的特点是客户端只需要浏览器应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器获取Web资源服务器把Web资源发送给浏览器即可
好处:易于维护升级:服务器端升级后客户端无需任何部署就可以使用到新的版本
静态资源:HTML、CSS、JavaScript、图片等。负责页面展现
动态资源: Servlet、JSP等。负责逻辑处理
数据库:负责存储数据
HTTP协议:定义通信规则
Web服务器:负责解析HTTP协议解析请求数据并发送响应数据
2HTTP
概念: HyperText Transfer Protocol超文本传输协议规定了浏览器和服务器之间数据传输的规则
HTTP协议特点:
1基于TCP协议:面向连接安全
2基于请求-响应模型的:一次请求对应一次响应
3HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的 缺点:多次请求间不能共享数据。Java中使用会话技术(Cookie、Session)来解决这个问题 优点:速度快
1HTTP-请求数据格式
请求数据分为3部分:
1.请求行:请求数据的第一行。其中GET表示请求方式/表示请求资源路径HTTP/1.1表示协议版本
2.请求头:第二行开始格式为key: value形式
3.请求体:POST请求的最后一部分存放请求参数
常见的HTTP请求头:
Host:表示请求的主机名
User-Agent:浏览器版本例如Chrome浏览器的标识类似Mozilla/5.0 ...
Chrome/79IE浏览器的标识类似Mozilla/5.o (Windows NT ...) like Gecko;
Accept:表示浏览器能接收的资源类型如text/*,image/*或者*/*表示所有;
Accept-Language:表示浏览器偏好的语言服务器可以据此返回不同语言的网页;
Accept-Encoding:表示浏览器可以支持的压缩类型例如gzip, deflate等
GET请求和POST请求区别:
1.GET请求请求参数在请求行中没有请求体 POST请求请求参数在请求体中
2.GET请求请求参数大小有限制POST没有
GET /HTTP/1.1
Host:www.itcase.cn
Connection:keep-alive
Cache-Control:max-age0 Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 Chrome/91.0.442.106
...
POST /HTTP/1.1
Host:www.itcase.cn
Connection:keep-alive
Cache-Control:max-age0 Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 Chrome/91.0.442.106usernamesuperbabypassword123456
2HTTP-响应数据格式
响应数据分为3部分:
1.响应行:响应数据的第一行。其中HTTP/1.1表示协议版本200表示响应状态码OK表示状态码描述
2.响应头:第二行开始,格式为key: value形式
3.响应体:最后一部分。存放响应数据
HTTP/1.1 200 OK
Server:Teagine
Content-Type:text/html
Transfer-Encoding:chunked...html
headtitle/title
/head
body/body
/html
状态码分类说明1xx响应中——临时状态码表示请求已经接受告诉客户端应该继续请求或者如果它已经完成则忽略它2xx成功——表示请求已经被成功接收处理已完成3xx重定向—一重定向到其它地方:它让客户端再发起一个请求以完成整个处理4xx客户端错误―—处理发生错误责任在客户端如:客户端的请求一个不存在的资源客户端未被授权禁止访问等5xx服务器端错误—―处理发生错误责任在服务端如:服务端抛出异常路由出错HTTP版本不支持等
常见的HTTP响应头:
Content-Type:表示该响应内容的类型例如text/html,image/jpeg;
Content-Length:表示该响应内容的长度(字节数);
Content-Encoding:表示该响应压缩算法例如gzip;
Cache-Control:指示客户端应如何缓存例如max-age300表示可以最多缓存300秒
状态码英文描述解释200OK客户端请求成功即处理成功这是我们最想看到的状态码302Found指示所请求的资源已移动到由Location响应头给定的URL浏览器会自动重新访问到这个页面304Not Modified告诉客户端你请求的资源至上次取得后服务端并未更改你直接用你本地缓存吧。隐式重定向400Bad Request客户端请求有语法错误不能被服务器所理解403Forbidden服务器收到请求但是拒绝提供服务比如:没有权限访问相关资源404Not Found请求资源不存在一般是URL输入有误或者网站资源被删除了428Pecondition Required服务器要求有条件的请求告诉客户端要想访问该资源必须携带特定的请求头429Too Many Requests太多请求可以限制客户端请求某个资源的数量配合Retry-After(多长时间后可请求)响应头一起使用431Request Header FieldsToo Large请求头太大服务器不愿意处理请求因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交405Method Not A11owed请求方式有误比如应该用GET请求方式的资源用了POST500Internal server Error服务器发生不可预期的错误。服务器出异常了赶紧看日志去吧503Service unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好511Network Authentication Required客户端需要进行身份验证才能获得网络访问权限
3Web服务器-Tomcat
Web服务器是一个应该程序软件)对HTTP协议的操作进行封装使得程序员不必直接对协议进行操作让web开发更加便捷。主要功能是“提供网上信息浏览服务”
Web服务器的作用
封装HTTP协议操作简化开发
可以将web项目部署到服务器中对外提供网上浏览服务
1Tomcat
概念:Tomcat是Apache软件基金会一个核心项目是一个开源免费的轻量级Web服务器支持Servlet/JSP少量JavaEE规范
JavaEE: Java Enterprise EditionJava企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJA、RMI、JSP、Servlet、XML、MS、Java IDL、JTS、JTA、JavaMail、JAF
Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖于Tomcat才能运行
2部署信息
Tomcat部署项目: 将项目放置到webapps目录下即部署完成
一般JavaWeb项目会被打成war包然后将war包放到webapps目录下Tomcat会自动解压缩war文件
3Tomcat maven插件
pom.xml添加Tomcat插件
buildplugins!--Tomcat 插件--plugingroupldorg.apache.tomcat.maven/groupldartifactldtomcat7-maven-pluginlartifactldversion2.2/version/plugin/plugins
/build
4Servlet
Servlet是Java提供的一门动态web资源开发技术
Servlet是JavaEE规范之一其实就是一个接口将来我们需要定义Servlet类实现Servlet接口并由web服务器运行Servlet
1Servlet快速入门
1创建web项目导入Servlet依赖坐标
dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope
/dependency
2. 创建:定义一个类实现Servlet接口并重写接口中所有方法并在service方法中输入一句话
public class ServletDemo1 implements Servlet {public void service(){}
}
3配置:在类上使用WebServlet注解配置该Servlet的访问路径
WebServlet(/demo1)
public class ServletDemo1 implements Servlet {}
4访问:启动Tomcat浏览器输入URL访问该Servlet
http://localhost:8080/web-demo/demo1
2Servlet执行流程
Servlet由web服务器创建,Servlet方法由web服务器调用
服务器怎么知道servlet中一定有service方法?
因为我们自定义的Servlet必须实现servlet接口并复写其方法而servlet接口中有service方法
3Servlet生命周期
Servlet运行在servlet容器(web服务器)中其生命周期由容器来管理分为4个阶段:
1加载和实例化
1.加载和实例化:默认情况下当Servlet第一次被访问时由容器创建servlet对象
WebServlet(urlPatterns /demo,loadOnStartup 1) 负整数:第一次被访问时创建Servlet对象
0或正整数:服务器启动时创建Servlet对象数字越小优先级越高
2初始化
2.初始化:在Servlet实例化之后容器将调用Servlet的init()方法初始化这个对象完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
init方法:
调用时机默认情况下Servlet被第一次访问时调用
调用次数一次
3请求处理
3.请求处理:每次请求Servlet时Servlet容器都会调用servlet的service()方法对请求进行处理
Servlet方法
调用时机默认情况下Servlet被第一次访问时调用
调用次数多次 4 服务终止
4.服务终止:当需要释放内存或者容器关闭时容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后容器会释放这个Servlet实例该实例随后会被Java的垃圾收集器所回收
destroy方法
调用时机内存释放或者服务器关闭的时候Servlet对象会被销毁调用
调用次数1次
4Servlet方法介绍
1初始化方法
在Servlet被创建时执行只执行一次
void init(ServletConfig config)
2提供服务方法
每次Servlet被访问都会调用该方法
void service(ServletRequest req, ServletResponse res)
3销毁方法
当Servlet被销毁时调用该方法。在内存释放或服务器关闭时销毁servlet
void destroy()
4获取ServletConfig对象
ServletConfig getServletConfig()
5获取Servlet信息
String getServletlnfo() private ServletConfig servletConfig;Overridepublic void init(ServletConfig servletConfig) throws ServletException {this.servletConfigservletConfig;System.out.println(init...);}Overridepublic ServletConfig getServletConfig() {return servletConfig;}
5Servlet的体系结构
我们将来开发B/S架构的web项目都是针对HTTP协议所以我们自定义Servlet会继承HttpServlet
WebServlet(/demo4)
public class ServletDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(get...);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(post...);}
}
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyform action/tomcat/demo4 methodpostinput nameusernameinput typesubmit
/form/body
/html
运行后控制台会输出get...
之后访问a.html,输入随意值控制台会输出post... Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {//根据请求方法的不同进行分别的处理HttpServletRequest request(HttpServletRequest) req;//1.获取请求方式String methodrequest.getMethod();//2.判断if (GET.equals(method)){//get方式的处理逻辑doGet(req,res);}else if (POST.equals(method)){//post方式的处理逻辑doPost(req,res);}}
封装处理
public class ServletDemo5 extends MyHttpServlet {} HttpServlet使用步骤
1.继承HttpServlet
2.重写doGet和doPost方法
HttpServlet原理获取请求方式并根据不同的请求方式调用不同的doXxx方法
6urlPattern配置
Servlet要想被访问必须配置其访问路径(urlPattern)
1. 一个Servlet可以配置多个urlPattern
WebServlet(urlPatterns {/demo7,/demo8})2. urlPattern 配置规则
1精确匹配
配置路径WebServlet(/user/select)
访问路径localhost:8080/tomcat/user/select
2目录匹配
配置路径WebServlet(/user/*)
访问路径localhost:8080/tomcat/user/aaa localhost:8080/tomcat/user/bbb
精确匹配优先级大于目录匹配
3扩展名匹配
配置路径WebServlet(*.do)
访问路径localhost:8080/tomcat/aaa.do localhost:8080/tomcat/bbb.do
4任意匹配
配置路径WebServlet(/) WebServlet(/*)
访问路径localhost:8080/tomcat/hehe localhost:8080/tomcat/haha
/*的优先级高于/
/和/*的区别:
当我们的项目中的Servlet配置了“/”会覆盖掉tomcat中的DefaultServlet当其他的url-pattern都匹配不上时都会走这个Servlet
当我们的项目中配置了/*意味着匹配任意访问路径
优先级精确路径目录路径扩展名路径 /* /
7XML配置方式编写Servlet
步骤
1.编写Servlet类
2.在web.xml中配置该Servlet !-- Servlet 全类名--servletservlet-namedemo8/servlet-nameservlet-classcom.sys.ServletDemo8/servlet-class/servlet!-- Servlet 访问路径--servlet-mappingservlet-namedemo8/servlet-nameurl-pattern/demo8/url-pattern/servlet-mapping