JavaWeb知识点复习(第⼀次)
JavaWeb
学习完这⼀个阶段,我们应该是能够完成⼀个简单的javaEE企业级开发项⽬了。后来的那些技术都是对JavaWeb技术的⼀个再封装,继⽽使得操作系更强,对开发者更加友好。
JavaWeb是⾛向外来的关键⼀步。我由于总总原因直接上⼿了SSM,最开始感觉还是有些许吃⼒的,毕竟东西学起来容易,但是思维转变起来却很难。JavaWeb是java进阶到SSM框架的⼀个过渡阶段,如果你在javaWeb阶段的很多概念性的东西学懂了,后⾯学起来很轻松。千万不要保有JavaWeb可以不学的想法,很危险
⽂章⽬录
1、概述
1.1、web应⽤程序简介
什么是web应⽤程序?
可以供浏览器访问的程序就是web程序
我们在⽹上浏览能够浏览到的任何信息都是存在于这个世界的某个⾓落的计算机中的。这些信息被放在指定的⽂件⽬录下。⼀个web应⽤程序由静态web和动态web组成,⾥⾯常常由含有很多的资源⽐如:html、css、js、jsp、servlet、java程序、jar包、配置⽂件。
1.2、静态web、动态web
提供给所有⼈看的数据始终不会发⽣变化的就是静态⽹页。提供给所有⼈看的数据始终会发⽣变化,每个⼈看到的不⼀样,那就是动态⽹页。
静态web的请求:客户端发出⼀次请求以后,由于这是静态web,webService就将请求传⾄服务器然后获取到对应的资源,然后返回给客户端。
动态web的请求:客户端发出⼀次请求后,获取到对应的动态web资源,有可能还会调⽤底层的数据库,然后将资源进⾏返回。
2、Tomcat服务器
⼀个⽤装载servlet资源的容器
我们的window⾃带的是IIS服务器,我们在JavaWeb阶段学习的时候使⽤的主要是tomcat服务器。当
然,你的未来也会接触到各种各样的服务器,⽐如nginx、apache、Jetty、Undertow,后⾯两个再加上Tomcat都是SpringBoot内置的服务器,如果还没有学习SpringBoot 的,你可以在这⾥埋⼀个种⼦。
使⽤tomcat的注意事项:
要能够识别tomcat中主⽬录下的每个⽂件夹的功能
会使⽤脚本⽂件进⾏启动服务器
我们可以修改tomcat的端⼝号,默认的是8080,在配置⽂件⽬录下的l⽂件中
请你谈谈⽹站是如何进⾏访问的?
当我们输⼊我们需要访问的⽹址的以后,系统会⾸先去检查本机的配置⽂件下的域名映射(即我们电脑的本地配置⽂件,默认情况下⾥⾯是有localhost 127.0.0.1这样的配置)如果我们访问你的对应的地址在我们的配置⽂件中拥有对应的映射路径,那么他就会按照配置⽂件的信息进⾏跳转。如果没有对应的映射,那么他就会去DNS服务器上⾯寻对应的资源,到了就返回,不到就返回404。
3、HTTP
HTTP是⼀个简单的请求-相应协议,通常运⾏在tcp之上,发展⾄今,已经到了http2.0。
在http1.0中,客户端与web服务器连接后只能获得⼀个web资源,然后就端⼝了连接
在http2.0时代,客户端与web服务器连接后可以得到多个web资源
http的请求⽅式⽤GET、POST、HEAD、DELETE、PUT、TRACT…
不过我们常⽤的只有GET和POST,这些⽅式⼀定要有⼀个概念,因为后期我们要学Restful风格的编程,我们同⼀个路径就会因为请求⽅式的不同,导致出现不同得结果
相应状态码:
200:请求成功
3XX:请求重定向
404:不到对应的资源
500:服务器代码错误
502:⽹关错误
4、Maven
约定⼤于配置
后⾯学习SpringBoot的时候也会出现这个名词。maven帮你设置好的东西,要⽐你⾃⼰配置的地位要⾼,因为maven对于我们每个⽂件的放置位置都有着严格的要求,这也就是后⾯我们需要使⽤资源过滤器的原因,因为我们的⾃⼰没有按照规则放置的位置maven帮我们⾃动过滤了(Mybatis的mapper接⼝与l的位置)
使⽤步骤:
1. 官⽹下载相应的版本
2. 配置对应的环境变量
3. 由于他默认的下载位置是使⽤国外的,所以我们需要在配置中的l中修改他的镜像,为的就是提⾼下载速度(我们没添加
⼀个依赖就会去下载对应的jar⽂件)
4. 然后我们需要⾃⼰新建⼀个仓库,这样我们才能将我们每次引⼊的jar依赖放在⼀个指定的位置,他默认的位置是C盘,你应该不喜欢
将⽂件放在C盘吧
5. 修改IDEA的maven的仓库位置,修改为我们新建的仓库,这样每次下载的内容才能够存放进去
6. 第⼀次使⽤maven,会下载很多的依赖,请耐⼼等待。当然也有可能出现IDEA与maven版本不兼容的问题,可以尝试换版本试⼀
试。
5、Servlet(重点)
5.1、Servlet程序
使⽤maven⼯具,创建⼀个web项⽬步骤:
添加对应的web⽀持
编写⼀个普通的类,继承HttpServlet类,并且重写⾥⾯的doGet、doPost⽅法
我们可以将doPost⽅法的⽅法体写成调⽤doGet⽅法,这样我们⽆论如何都能够访问到我们的doGet⽅法中
将我们编写的类注册到对应的l⽂件中,并且配置对应的映射。即我们访问映射,程序⾃动帮我们转移到我们的类上
配置Tomcat
访问测试
5.2、Servlet原理
当浏览器访问web容器中的对应资源时,对应的资源会根据Request、Response这两个参数,传递相应的信息,再跳转到Servlet中的service⽅法,根据我们⾃⼰编写的类,处理相应的请求,最终将信息返回。
5.3、Mapping
将这个理解成映射即可。在我们的l配置⽂件中,servlet中的配置我们⾃⼰编写的处理类,servlet-mapping中配置我们的访问的时候的url路劲
5.4、ServletContext
ServletContext类想⼀个⼤容器,他可以⽤来存放每⼀个Servlet中的数据。我们只需要使⽤ .setAttribute(“xx”,xx) 就可以⼿动的将我们Servlet中的数据放置进那个⼤容器。
5.5、重定向和请求转发(重点)
重定向:
请求转发:.forward()
两者的区别:
静态网页和动态网页的概念和区别请求转发,当A请求C的资源,但是A⽆法直接访问到,但是B能访问到,所以我们就访问B,以此来达到A访问C的⽬的
重定向,当A需要访问某资源的时候,先去访问B,但是B没有对应的资源,不过B却告诉A应该访问A,于是就去A再去访问C,继⽽拿到了对应的资源
5.6、HttpServletRequest、HttpServletResponse
由于web服务器会收到客户端的http请求,基于此出现了HttpServletRequest、HttpServletResponse两个类,分别⽤来创建接受数据和返回数据的对象,也就是我们doGet⽅法的参数req与resp。
resp:
我们在浏览器中能够看到的请求效果⽐如编码、状态码、请求头…都是利⽤resp实现的。当我们将数据进⾏处理以后,需要返回到对应的前端页⾯时,就可以⽤resp来返回对应的信息
//设置字符便阿门
resp.setCharacterEncoding("utf-8");
//设置内容类型
resp.setContentType("text/html");
req:
获取前端传来的参数,⽐如我们可以对传⼊的数据进⾏字符编码编码的设置(当然我们也可以对返回的数据进⾏字符的设置)。我们使⽤这个参数能够获取到前端的参数信息,然后将参数信息进⾏对应的逻辑转换,记得实现我们想要的操作。
//设置返回的类型
req.setCharacterEncoding("utf-8");
//使⽤请求转发
//此时使⽤的是重定向的形式
resp.sendRedirect("success.jsp");
5.7、Cookie、Session(重点)
Cookie、Session是两种保存会话的技术
明⽩会话的概念:
⽤户打开⼀个浏览器,访问了多个web资源,再关闭浏览器。这个过程称为会话
如果我们之前访问过某个web资源,当我们再次访问的时候,服务端能够知道我们曾经访问过,那么这个就称为有状态会话
⼀个⽹站如何证明你来过?
cookie:服务端给客户端⼀个信件,客户端下次访问服务端带上信件就可以了(带上指定的信物去拜访某⼈)客户端为主导
session:服务器登记你来过,下次你来的时候来匹配你(回到你的宿舍,宿舍的门禁会来匹配你)服务端为主导
Cookie
Cookie对象的创建:我们从客户端的req中获取对应的Cookie信息
Cookie[] cookies = Cookies();
Cookie⼀般保存在本地的⽤户⽬录或者AppData下
⼀个Cookie只能保存⼀个信息
⼀个web站点可以给浏览器发送多个cookie,最多存放20个cookie
cookie⼤⼩限制4kb
浏览器上限300个cookie
Session
获取对应的Session信息:登记以后的⽤户拿到的是SessionID,每个⽤户唯⼀,我们拿着SessionID去与服务器进⾏判定⽐对HttpSession session = Session();
Session和Cookie的区别:
Cookie是把⽤户的数据写给⽤户浏览器,浏览器保存(可以保存多个)
Session把⽤户的数据写到⽤户独占Session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)
Session对象由服务器创建
6、JSP
都2020了,我在三年前就有⼈叫我不要学习JSP。JSP技术是⼀种模板引擎,它给定了我们的页⾯数据⼀种格式,让我们的数据按照它的语法来进⾏显⽰,我们未来还会学习很多,⽐如SpringBoot推荐的Thymeleaf,他们都是⼀种模板引擎。但是由于JSP强⼤的耦合性,使得如今除了少数的政府项⽬还在使⽤外(毕竟项⽬已经很多年了,重构花费太⼤,没必要)其他的公司都是摒弃了JSP的,特别是前后端分离时代,JSP已经没有了市场。所以我们只需要了解即可
6.1、JSP对应的命令
JSP表达式:
<%--JSP表达式
作⽤:将程序输出到客户端
<%= 表达式或者变量%>--%>
<%= new java.util.Date%>
JSP脚本:
<html>
<body>
<h2>Hello World!</h2>
<%= new java.util.Date() %>
<%
int sum= 0;
for (int i = 0; i < 100; i++) {
sum += i;
}
out.print("<h1>sun:"+sum+"<h1>");
%>
</body>
</html>
JSP指令:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论