Servllet
什么是Servlet
Servlet是sun提出的,用于在服务器端处理HTTP协议的组件;
servlet特征
1)可以给浏览器返回动态的HTML,图片等资源(处理http协议);
2)Servlet是服务端的组件,必须部署(拷贝)在服务器上才能运行;
3)Servlet:必须满足相关的规范;
服务器:java服务器,javaWeb服务器,Servlet服务器:就是一个软件;
Http协议:
1)它就是一个规范,约定了浏览器和服务器如何通信,以及通信的数据格式;
2)如何通信:a:建立连接;b:发送请求;c:接收响应;d:关闭连接;
特点:一次请求一次连接,此种连接方式可以最大限度的降低服务器的压力;
3)数据格式:请求数据:请求行(协议类型,路径,请求方式)
消息头(请求数据的描述信息)
实体内容(浏览器向服务器发送的数据)
响应数据:状态行(协议类型,状态)
消息头(响应数据的描述信息)
实体内容(服务器向浏览器发送数据)
4)如何处理HTTP协议
1:如何通信:浏览器和服务器已经实现了该通信过程,实际上他们内部都有通信组件专门处理通信事宜;
2:处理数据:服务器通过Servlet处理数据:request:用来处理(接收)请求数据;
response:用来处理(发送)响应数据;
请求方式:
1)浏览器向服务器发送请求及传递数据的方式;
2)需要掌握的两种方式:
2.1)get:采用URL传参,即浏览器会将参数附加在URL后面传递给服务器;
参数在传递过程中可见,隐私性差;
因为URL大小有限制,因此传递的数据受限,一般很小。
2.2)Post:采用实体内容传参;
参数在传递过程中不可见;
实体内容大小不受限制;
3)使用场景:
3.1)默认:
表单默认使用get请求传参;
超链接发出的请求是get请求;
地址栏直接输入的地址是get请求;
3.2)get:向服务器获取数据时;
3.3)post:向服务器提交数据时;
乱码问题:
1)产生原因:编码和解码不一致导致的;
2)get请求解决方案:
2.1)修改/tomact/config/server.xml 在70行增加URIEncoding='UTF-8';
2.2)让Servlet接收乱码,然后使用ISO 8859-1 将字符串还原成byte,再使用UTF-8将其转成String即可;
3)post请求解决方案:
在获取数据前,使用request设置实体内容的解决方式为UTF-8, req.setCharactorEncoding('UTF-8');
4)响应时的解决方案:
设置编码:res.setCharacterEncoding('UTF-8')
设置解码:res.setContextType('text/html;charset=utf-8')
5)总结:get请求尽量不传中文
post请求:req.setCharactorEncoding('UTF-8');
响应时:res.setContextType('text/html;charset=utf-8');
JavaBean:
1)必须有包;2)有默认的构造器;3)实现序列化接口;4)通常有get/set方法;
servlet路径有3种配置方式,不同的方式其处理请求的能力不同;
1)精确匹配(/add)
1.1)只有这个唯一的名字可以访问Servlet;
1.2)该Servlet只能处理这一种请求;
1.3)试用于请求较少的项目;
2)通配符(/*)
2.1)任何请求都可以访问该Servlet;
2.2)该Serviet可以处理一切请求;
2.3)试用于请求较多的大项目;
3)后缀(*.xxx)
3.1)带有xxx后缀的请求可以访问servlet;
3.2)该Servlet能处理所有.xxx后缀的请求;
3.3)试用于一个Servlet处理一类(多个)请求;
Servlet生命周期:
1)实例化; 2)初始化; 3)就绪; 4)销毁;
Context(上下文/环境)
1)可以给其内部的个体提供资源;
2)可以给其相关的对象提供数据;
ServletConfig-->Servlet;ServletConfig和Servlet是1对多的关系;可以将其理解为Servlet的私有环境;
ServletContext
1)是Servlet公有的环境;
2)其数据可以被所有的Servlet共用;
3)ServletContext和Servlet是1对多的关系;
程序运行过程中,产生的共享数据可以存入Context;
存:ctx.setAttribute("名称","值");
取:ctx.getAttribute("名称");
URI是uniform resource identifier 统一资源标识符,用来唯一的标识一个资源;
URL是uniorm resource locator 统一资源定位器,是一种具体的URI,即URL可以用来标识一个资源,而且还只明了如何
定位这个资源;
URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则;
URL类不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的;
隐含(内置)对象
1.request (*) HttpServletRequest;
2.response (*) HttpServletResponse;
3.out JspWriter;
4.config ServletConfig;
5.application * ServletContext
6.exception Throwable Jsp发生异常,只有在发生异常时可用;
7.session (*) HttpSession
8.page * Object 就代表当前页面,相当于this;
9.pageContext pageContext 页面的环境,用于给页面提供数据,该对象引用其它8个对象;
HTTP协议:
状态管理
HTTP协议是一种无状态的协议,每次连接处理一个请求;
总结:HTTP协议下的服务器不认识浏览器,如果有些业务需要记住的话,就需要对状态进行管理;
状态:
就是一份数据,用于证明浏览器曾经访问过服务器;
可以是任意的数据,只要能证明即可;
实现:HTTP协议是无状态协议;要想做状态管理,必须:
1)Cookie:将数据存到浏览器;服务器压力小,但不安全,数据容易被改;
2)Session:将数据存在服务器上,服务器压力大,但安全;
serverless java也可以了 java中server
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java 6 中也可以运行 javascript 喽 (转)
给 Java SE 注入脚本语言的活力Mustang 的脚本语言新特性 文档选项 将此页作为
javascript java 脚本 语言 string