小白的进阶之路14

---恢复内容开始---

servlet 是Javaweb的三大组件之一。

三大组件:servlet,filter,lisoner

客户端通过服务器想浏览器发出请求。

我们所写的AServlet、BServlet,都是由我们实现servlet接口的实现类。

servlet是单例的,一个类一个servlet,他们的功能是不同的。但他是线程不安全的,而且效率是高的。有可能出现一个servlet处理同时处理多个请求,所以最好不要在servlet中随便创建成员变量,有可能出现一个线程是读操作,另一个线程是写操作,这样就出现线程不安全的问题。但如果是只读,或者只写操作还可以。

servlet 类我们写(比如执行什么功能),但是对象由Tomcat创建。

servlet完成的三大块:

获取请求数据、  请求处理、完成响应。

servlet的三大生命周期方法:init(),//第一次请求servlet则创建。destroy()//Tomcat关闭则死亡。

service(),,,//可以多次调用,每次处理请求都会调用。

而这些方法都是由Tomcat调用,调用destory则servlet死亡,关闭Tomcat则死亡。

tomcat怎么访问servlet,servlet只是一个java类???

需要用xml配置文件,将servlet和URL的路径绑在一起。

在xml配置中,获取初始化参数。

获取初始化参数

需要调用service时,Tomcat将service的两个参数强转成httpservletrequest,和 httpservletresponse类型。然后通过httpservletreques得到当前的请求方式,是post还是get,如果是post,则调用doPost方法,如果是get,则调用get方法。

4打头,是客户端的错误。

一般情况下,servlet的创建时第一次被调用的时候,但是可以设置xml文件实现服务器开启时就创建。

图中的<load-on-startup> 表示第一次开启的时候就创建的顺序。

ServletContext==application

生命周期在服务器开启时创建,服务器关闭时死亡。

一个项目只有一个servletcontext对象。

servletconfig()。getservletContext();

正常我们创建一个servlet会继承httpservlet

public void servlet extends httpservlet(){

………………}

但其实,httpservlet继承了servletconfig接口。

javaweb中有四大域对象,即pageContext,servletContext,servletrequest,httpsession。

域对象是什么?有什么作用?

域对象不需要创建直接在servlet区域中调用,作用是保存数据以及servlet之间的数据传递。所以域对象有两大功能,第一存数据,第二取数据。

servletcontext可以设置全局的初始化参数,此初始化参数不属于任何一个servlet

下面是一个小练习:

访问量的统计。

第一次访问的时候建立一个int型的变量在servletcontext这个对象中,之后的每次访问都+1;

首先,第一次访问的时候用setattribute()这个函数来创建一个属性,

将输入流转化为字符串,需要用到commons.ioUtils这个工具类。

URI=项目名+servlet路径:、/goods/AServlet

URL:不包含路径的参数的请求路径。即?之后全没有

获取请求参数,用户向服务器发出请求,如果请求参数在请求体中,则是post请求,如果是URL中,则是get请求。

其中第一个和最后一个最为常用。

转发是一个请求,跨多个servlet,但是使用一个request和response域。

这是转发,request.getRequestDispatcher("/TwoServlet").forword(request,reponse);

请求转发是只显示转发至的servlet响应体。

在转发中,留头不留体,比如AServlet转发至BServlet,在A中设置响应头和响应体,在B中设置响应体,那么,A中只会留头(为了证明|A参与)不会留体,只会留B中的体。、

转发地址栏不会发生变化,如果想地址栏发生变化,那么必须使用重定向。如果想在下一个servlet中获得request域中的数据,那么必须使用转发。

服务器默认编码是iso8859-1;而浏览器默认的编码是gbk;但是Tomcat8的默认编码是utf-8;

响应编码:不乱码,只需加上response.setContextType("text/thml";"charset=utf-8");

请求编码:页面是什么编码,那么获得请求参数就是什么编码。在获得请求参数之前,要加上request.setCharacterEncoding("utf-8");然后在用request.getParameter("XXX");

以“/”开头,则是绝对路径,绝对路径要加项目名+。。。

不以“/”开头,则是相对路径

---恢复内容结束---

原文地址:https://www.cnblogs.com/hanmengdi/p/9457202.html

时间: 2024-07-30 00:17:18

小白的进阶之路14的相关文章

零基础Python学习路线,小白的进阶之路!

近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学习路线图.对于一个零基础的想学习python的朋友来说,学习方法很重要, 学习方法不对努力白费 一定要有一个正确的学习线路与方法零基础Python学习路线,小白的进阶之路!零基础Python学习路线,小白的进阶之路!必学知识:[Linux基础][Python基础语法][Python字符串][文件操作

小白的进阶之路1

在登陆的页面中,需要一个表单,<form action="\goods\loginServlet"  method="post" > 为什么要有这个servlet? 答:需要将这个用户填好的表单交给其他的东西,比如服务器,或者servlet来继续处理或响应. 用户名:<input  type="text" name="username ">. 密   码:<input type="pas

小白的进阶之路2

今天遇到的第一个问题就是我写的jsp代码在 引进css样式的时候,出现了问题,我引不进去. 试了好多次,起先的代码是<link  rel="stylesheet"  type="text/css" src="<c:url value='/css/register.jsp'\>">. 后来将register.css移到和jsp的同一路径下,代码改成<link rel="stylesheet" typ

小白的进阶之路7

注解: 昨天学了配置文件,感觉还不错,确实之前new的方式好了很多,今天继续学习注解. OK,开始进的入门案例 第一步,配置扫描注解, 注意:其中base-package  后面的参数是应new的对象所在包. 第二步,在需要注解的实体类加上注解. 第三步 就是和之前一样.... 根据刚才的小例子,我测试了一下,发现了有错误,but-我语法没错啊... 在我各种调试之后发现,缺个jar包,只有配置文件的六个jar包是不够的,  jar包害死人啊!还有需要一个aop的jar包. @component

小白的进阶之路9

---恢复内容开始--- 今天开始学习spring的事物管理 先写一个转账的例子: 动手之前,先把逻辑搞清楚: 持久层: AccountDao(){ ------>接口 public void in(String in,double money): public void out(String out,double  money): } AccountDaoImpl{------->实现类,配置文件需要注入 private serviceDao sd;------->配置文件注入时,采用

小白的进阶之路12

---恢复内容开始--- 昨天上午弄了一个简单的页面,就是关于客户管理系统,想着实现保存功能,可是问题卡在页面跳转上,从输入信息页面就是跳不到saveservlet,将用户属兔的信息用表单传给servlet,然后servlet读取后,用map封装到一个customer对象中,算了不多说,看代码. 然后今天我一生气,直接省略了页面传值这一步骤, 下面是service层. 最后是dao层 打开Tomcat,输入框输入 刷新数据库,得到了想要的结果. 如果其中出异常呢???打印结果将会发生变化,因为这

小白的进阶之路13

昨天说到了级联保存,那么什么是级联保存. 我们都知道,双向保存就是customer和linkman都要保存,那么单项保存呢?单向保存就是只保存一方,而不需要保存另一方,但是这样会出异常,这是就需要级联保存 只需要保存customer,会自动的将linkman保存到数据库中. 级联保存室友方向性的,保存客户级联联系人,保存联系人级联客户. 说道数据库,不得不承认,数据库是我的弱项,我今天想好好地补一下,然后再继续hibernate. 首先要知道:SQL是结构化查询语言:structure quer

小白的进阶之路16

cookie:是服务器产生保存到浏览器,是http协议制定的,下一次浏览器在请求服务器时,浏览器将上一次访问产生的cookie在还给服务器. cookie是一个键值对,服务器保存cookie的响应头. cookie不能跨浏览器. cookie的属性:name:value,还有一个是生命周期,即maxage:<0; 表示cookie只在浏览器的内存中存在,浏览器进程结束,cookie则死亡. =0;访问浏览器时则死亡. >0:可以自己设置时间. 跨域cookie:比如在百度登录账号后,在百度云中

ycb的ACM进阶之路 二进制多重背包

ycb的ACM进阶之路 发布时间: 2017年5月22日 14:30   最后更新: 2017年5月22日 14:31   时间限制: 1000ms   内存限制: 128M 描述 ycb是个天资聪颖的孩子,他的梦想是成为世界上最伟大的ACMer.为此,他想拜附近最有威望的dalao为师.dalao为了判断他的资质,给他出了一个难题.dalao把他带到一个到处都是题的oj里对他说:“孩子,这个oj里有一些不同的题,做每一道题都需要一些时间,每一题也有它自身的rp(人品值).我会给你一段时间,在这