JSP和Servlet总结

XML 可扩展表语言

xml是一种数据格式,与之对应的还有Json。数据格式:表示数据的一种格式,按照固定的格式去表示这个数据。这样的话,想给别人传输数据的时候,按照xml的格式来传输这个数据;接收数据的一方,同样可以按照xml格式来解析这个数据,这样就可以完成数据的传输。把按照xml这个语言规则去编写的文本文件称之为xml文件,或xml文档。
xml作用:
1.编写配置文件。因为使用xml编写的配置文件,它的结构比较清晰,可以方便观察我们配置了哪些属性。
2.可以做数据传输。(如JD商城用xml格式传输数据,浏览器一般用html格式,html与xml是非常相似的)

文档声明:

<?xml version="1.0" encoding="UTF-8" ?>

XML里面也有由各种各样的标记组成的。

XML基本语法:(必须遵守的一些规则)
1.第一行是文档声明。且只能放在第一行,因为它读取的时候只读取第一行当作文档声明。文档声明里面包含了两个属性,一个是XML版本;第二个是XML的编码格式。
2.在XML文件里面是大小写敏感的。与Html不同。
3.每一个标记(标签)都可以用自己的属性。如id="001"。在编写XML的时候标记名和属性名都是我们自己定义的,可以任意定义,与Html不同。这就是XML可扩展标记语言的含义!所有的属性值都必须用双引号引起来,不管它是什么类型的。
4.一个XML文档必须得有个根标记,也可以叫做根元素。根元素是其他所有元素的祖先元素。
5.标记大小写敏感,且标记中不能用空格,冒号。不能以数字开头。

XML注意事项:
想要在XML文本区空加入一些特殊的标记,如:<。<在XML是有特殊作用的,表示一个标记的开始。

<name>&lt;苹果</name>

其中的&lt; 就代表<小于符号,更多见:XML语法规则

XML文档的约束:
正常情况我们写XML文档是没有任何约束的标记名、属性名可以任意。但假如我们在使用别人框架(如:Spring)的时候,别人的框架要求我们提供一个配置文档,这个时候这个配置文档就不能随便写了,因为随便写人家读取不出来,我们得按照别人的要求来书写配置文档,可能会要求我们有哪些标签有哪些属性,然后这个属性是干嘛的,这个时候我们就得按照要去来书写XML配置文档。对XML文档的这种要求,称之为XML文档约束。
我们在开发XML的时候,可以去开发一种文件,这种文件来表示对XML文档的约束,这个时候如果说XML文档遵守了某个约束的话,当我们书写XML文档不符合约束规则的时候,就会出现错误,反之我们写错XML文档。可以自己单独开发一个约束文档,约束文档里面就书写了约束规则。约束规则可能通过两种文档格式来表示:1.DTD;2.Schema。Schema相当于DTD的下一代,更牛逼!它在约束的表示上更加厉害。约束文档一般不需要我们自己书写,直接用别人开发好的。
约束规则可以单独放到一个文件里面,也可以直接放在XML文件里面。
1.内部引入:直接在XML文件里面书写了约束规则。
2.外部引入:1)把dtd文档放在本地;2)dtd文档放在网络。
引入Schema约束是通过属性的方法,把属性赋值给根元素(根标记)

dom4j:用dom方式解析XML
很多框架里面也使用了dom4j,因为框架提供了配置文档,配置文档需要解析,解析的话就需要一个解析的软件,dom4j就是用来做xml解析的。当然还有xml其他解析方式。
下载方式:直接百度搜dom4j,是放在github上托管的。那个官方用很多案例,学会在官网上学习 一个新知识点,很多框架的官网上的知识都是很全面的。

Tomcat

众所周知,想要访问哪个网站需要,ip+端口号。配置Tomcat的时候也需要配置端口号,但是为什么我们平时访问百度之类的网站是没有端口号的,只有域名呢?是因为默认的端口号是80端口,也就是说我们在Tomcat的配置中,把端口号设置成了80,那么我们在测试项目的时候就需要在浏览器地址栏写端口号了,直接可以写成:localhost/webproject01之类。
附(ip和域名的区别):域名是相对于网站来说的,ip地址是相对于网络来说的,准确的说是通过dns服务器来完成的,你提交域名,他给你返回一个ip地址,也称之为域名解析),接着做出一个响应,将信息返回。

Http协议

Http请求:
get请求:请求的参数会在浏览器的地址中显示出来,且没有请求体。
可以直接在浏览器中输入参数名加值,多个参数用&连接。来进行请求:
且get请求方式的数据放在:中,但是这不是请求体。
当然可以在test.jsp中通过out.println(request.getParameter("name"));把数据显示出来。
post请求:请求的参数不会在浏览器的地址栏中显示出来,且请求体放在Form Data中:

request和response

request内置对象可以获取客户端发过来的数据包,不管是get方式或者post方式发送过来的都可以获取,主要是获取客户端发送过来的参数。
request是获取到从客户端发送过来的数据,response是向客户端输送一些数据,给客户端响应的,让客户端干一些事情的。

request和response的生命周期
它们的生命周期是一样的。
客户端每发一个requset请求,服务器端都会生成一个新的request对象和一个response对象,当服务器端把这个响应response发送给客户端之后,这个reuest对象和response对象都会被销毁掉。就算你访问同一个页面,每次刷新都是一个新的请求,可以通过Network查看到,不是按页面来的是按请求来的。但是,同一个页面的成员变量还是存在的,也就是一个页面是一个单例,它的成员变量每次刷新会在上一次的基础之上刷新。比如,在一个JSP中通过<%! int count = 0;%>声明了一个成员变量(全局),然后这个JSP中有<%count++;%>这种操作,那么每次刷新访问到的count的值是在上次基础之上累加的,也就是一个JSP页面是一个单例
2019-11-13更正:其实内部是有优化机制的,就是说服务器不会创建一个新的request对象,而且会把之前的request对象清空。经过测试,两个不通的JSP发起的请求,它们的request对象的内存地址是一样的。且,就算保存了一个JSP的request对象,然后在另个一个JSP访问request对象发现是一样的,也就是说request对象永远只有一个!!每次都是清空,而不是重新创建。不会重复的创建销毁,浪费开销,只把里面的数据清空。

数据传递:
客户端与服务器之间的传递是通过参数传递的,可以通过request.getParameter("username")得到数据。
页面与页面之间的数据传递(也就是服务器端之间的数据传递),通过在register_do.jsp中request.setAttribute("message","注册成功,请登录!");加上请求转发request.getRequestDispatcher("login.jsp").forward(request, response);然后在login.jsp中通过Object msg = request.getAttribute("message");来取到请求的数据。一定要有请求转发,这样相当于服务器只创建了一个request在login.jsp中能取到register_do.jsp中设置的属性。通过请求转发,你浏览器的地址是不会变的,不会变成你转发之后的jsp地址,只会返回其内容。相当于,你打客服电话咨询某个问题时,当前客服解决不了你的问题,然后给你转接到其他客服的号码上,但是你手机显示的号码还是之前那个客服的号。
可以数据传输的有:request,session。

请求转发与重定向:
相同点:都是返回一个新的页面。区别:1.请求转发是服务器直接返回给客户端;重定向是服务器response响应(让客户端发情一个新请求,去请求一个别的地址)发起一个新的请求去访问另一个页面,与之前的请求是两个不通的请求,固数据是传递不过去的。2.浏览器的地址栏的URL重定向会显示第二次请求的路径,请求转发则不会变,因为请求还是那个请求只是被服务器转发了而已,固可以进行数据传递到新页面。

session内置对象

生命周期
一个客户端每次新的请求,都会创建一个新的request对象。但是,当第一次发起请求的时候,服务器端会监听到有一个客户端来了,这个时候它会创建一个session,session代表一次会话。可以把所有的请求,称之为一次会话。session是从你打开这个网站开始,到关闭这个网站结束。session对象是在服务器端存储的,你在任意一个JSP页面都可以访问到session对象,这个session对象就代表当前会话。一般情况,一个客户端只对应一个session,但是在同一个计算机上,用不同的浏览器访问服务器会认为是不同的客户端。
session销毁的情况:1.关闭浏览器;2.打开一个网站之后,你去干别的事情了。长时间不和服务器交互,服务器会自动把你的session销毁掉,因为服务器端有一个监听session活跃的时间,你每次访问一下服务器,这个session的活跃时间就会被更新,这个时间是可以设置的,一般默认是30分钟,可以在Tomcat里面设置。

application内置对象

application代表整个web应用/整个web程序/整个web网站。application对象在整个服务器端只存在一个application,当tomcat启动起来的时候就会创建一个application对象。你在不同的客户端访问的时候,都是访问的同一个application对象。它的级别是最高的!至高位上的位置。tomcat里面只有一个application对象。但是一般不用application作数据的传输,application放的数据是全局的数据,每个客户端都需要的数据。

application生命周期:它是整个web应用级别的,当tomcat启动起来的时候,它就会创建。tomcat里面可以部署多个web应用,每一个web应用对应一个application对象。当整个网站被关闭的时候,或者宕机,application对象会被销毁,所占的内存也会被释放掉。与tomcat的启动与关闭密切相关。

JSP总结:

JSP是html与Java代码的结合,本质上是适合做展示的,是用来展示给用户看的一个网页,只不过这个网页可以通过Java代码去设置显示的内容。JSP核心作用还是用来作展示,不能用来作业务逻辑的处理。一般那些逻辑写在Servlet里面。

Servlet

Servlet本质上是一个Java类,继承自HttpServlet。

Servlet可以处理用户的请求(当用户发出一个请求的时候,它是请求某个Servlet的),用户发的请求是根据url来的,就是路径。通过@WebServlet("/")来指定。
Servlet第二种配置方式(访问路径的配置方式):
1.如上,通过@WebServlet注解;
2.通过配置文件。web.xml

web.xml介绍:
在WEB-INF可以放置一个web.xml配置文件,可以配置与我们项目相关的一些设置,如Servlet访问路径的配置。

Servlet一般来说是用来处理逻辑的,不适合作展示。

Servlet和JSP本质上是一样的,都是用来处理用户的请求的。区别在于,JSP更加适合做展示,Servlet更加适合处理业务逻辑。Servlet处理完之后,一般会把这个请求转发给某个JSP,把这个JSP页面返回给客户端。Servlet可以完全由Jsp代替,Jsp也可以完全用Servlet来代替,但是两者的侧重点不同。

总结:整个儿web应用包含了两大重要的东西,Servlet+Jsp,Jsp在编译之后本质上也是个Servlet。所以说,可以简单的认为,整个web应用就是“由Servlet来组成的”。Servlet就是用来提供服务的,处理用户请求的。我们的web应用叫作ServletContext,在Servlet中获取application(JSP中的内置对象)方法:

            ServletContext application = this.getServletContext();
            Object userNumber =application.getAttribute("userNumber");

其他

1.我们在创建Java Web项目的时候这里选择的版本,其实就是Servlet的版本。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值