java Web笔记

Get:标记在地址栏中 放在请求行中显示getUsername=。。。Password=。。。

Post:使用的是二进制的上传下载 请求行不显示信息 数据传输量大数据隐蔽对文本没有 pst不能再浏览器中的记录中缓存

 

********************************************************************

发送大量的数据要用Post 密码用post

默认情况下数据传输方式是使用的Get

method属性秀给传递方式。Servlet类进行请求处理

固定格式:  

Protect void doxxx(HttpServletRequest request,HttpServletRespnse respnse)throw IOException,...{}

 

给參数起名字的时候不能以jsp开头

 

Servlet的使用:

Servlet 是一种基于java技术的web组件,是一种基于java的且与第三方平台无关的类。通常,它能够被Web server编译、载入和执行,最后生成动态的资源内容。

为什么要使用Servlet?

Servlet是採用java语言编写,而由java 跨平台性的特点可知,servlet的移植性非常好,且servlet API具有完好的标准,差点儿全部的主流server都支持servlet.

Servlet与传统的CGI(Common Gateway Interface)相比,功能要强大。且处理的请求採用的是线程,而非进程,从而节省大量的资源开销,因此Servlet处理请求更轻量级、更高效

继承自Javax..servlet javax.servlet.http两个包

 

 

 

Servlet接口

 

Servlet API的核心是Servlet接口,全部Servlet类都必须实现该接口。

它定义了五个方法,当中当中三个initservicedestroy是由Servlet容器来调用的。

 

 在servlet容器或web server启动时, 对servlet进行实例化,此时调用servlet的构造方法;

servlet实例化后,调用该servlet实例的init方法,对servlet进行一些初始化处理,处理完毕后,将该servlet注入到servlet容器中;

clientweb serverservlet容器请求servlet时,web serverservlet容器首先会依据请求的servlet名称去servlet容器中找相应的servlet,假设servlet不存在该名称相应的servlet,则向client响应请求不存在等信息;

假设请求的servlet存在于servlet容器,则调用servletservice方法,生成动态资源,响应给client; (记住,整个过程该servlet仅仅有一个实例,即单例);

web server退出或servlet容器销毁时。调用servletdestroy方法,最后唯一的sevlet实例将会被GC

另外两个方法:

public ServletConfig getServletConfig()

-----该方法返回容器调用init()方法时传递给Servlet对象的ServletConfig对象

public String getServletInfo()

-----返回String。当中包含关于Servlet的信息,如作者、版本号等。此方法非常少用,返回null就可以

HttpServlet类 

添加了一个新的service()方法,格式例如以下:

protected void service (HttpServletRequest,

                  HttpServletResponse)

      throws ServletException, IOException;

该方法是Servlet向客户请求提供服务的一个方法。

编写Servlet能够覆盖该方法。 

HttpServletRequest接口    

该接口扩展了ServletRequest接口。

提供了关于HTTP请求对象的视图;

定义了从请求对象中获取如HTTP请求头、cookies信息的方法。

HttpServletResponse接口 

该接口扩展了ServletResponse接口;

提供了针对HTTP的发送响应的方式;

定义了为响应设置如HTTP响应头、设置cookies信息的方法;

该方法是Servlet向客户请求提供服务的一个方法。

Httpservlet是一个抽象类能够用来继承可是不能够生成对像 可是继承的类能够new对像

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Servlet容器处理请求的过程

 

1)用户点击一个链接,指向了一个servlet而不是一个静态页面。

2)容器“看出”这个请求是一个Servlet,所以它创建了两个对象HttpServletRequestHttpServletResponse

3)容器依据请求中的URL找到正确的Servlet。为这个请求创建或分配一个线程,并把请求和响应对象传递给这个Servlet线程。

4)容器调用Servletservice()方法。

依据请求的不同类型,service()方法会调用doGet()doPost()方法。这里假设调用doGet()方法。

5doGet()方法生成动态页面,并把这个页面“塞到”响应对象里。需要注意的是,容器还有响应对象的一个引用!

6)线程结束。容器把响应对象转换为一个HTTP响应,并把它发回给客户。然后删除请求和响应对象。

 

请求的方式是post那么就用Dopost方法

Get方式用DoGet方法(也就是对其进行重写)

Servlet 在server起来之后就已经被创建之后server调用service方法传递给servlet对像然后创建requestresponse

 

****************************** **********************************Tomcat的管理平台管理Web应用的生命周期:

 

普通情况下。Web应用随着Servlet容器的启动而启动。随着Servlet容器的执行而执行,随着Servlet容器的终止而终止。

通常,在应用执行期间,相应用的web.xml文件进行改动后,不能马上生效。必须又一次启动应用才会生效。

Tomcat作为Servlet容器的一种详细实现。提供了一个管理平台,用户能够在Tomcat执行时,手工管理单个Web应用的生命周期。

 

 

(演示)步骤:

1、改动<CATALINA_HOME>/conf/tomcat-user.xml,添加以下的用户:

<tomcat-users>

<role rolename=manager-gui"/>

<user username="tomcat" password="tomcat"                 roles="manager-gui"/>

</tomcat-users>

2、启动Tomcat

3http://localhost:8080/manager/html

 

 

Servlet初始化步骤:

1servlet容器载入servlet 

2Servlet容器创建servletCnfig对像包含特定的servlet初始化配置信息,并和Web应用的ServletContext对像相关联、

3servlet让其的创建Servlet对像。

4servlet容器的调用Servlet对像的init()方法对其进行初始化

*************************************************************

Servlet工作原理

首相是客户端方请求,servlet调用service方法对其进响应

2service方法中对请求的方式进行了匹配,选择调用doGet()还是调用doPost()方法进入相应的方法中调用逻辑层的方法。实现对客户端的响应

3:在servlet接口和GGenericServlet中乜有Doget()方法,doPost()方法,HttpServlet中定义了这些方法可是都返回的是error信息所以每次定义一个servlet方法时候。都必须实现doGet或者是doPost方法

Servlet的销毁阶段

1:档Web应用终止时servlet会先调用对象的Destroy()方法然后进行销毁

2:在destroy()方法中通常写关于文件传输流关闭数据库链接的语句释放所占用的全部资源

servletContext是一个公共的空间能够被全部的用户訪问

**************************************************

上传文件:
通过HTML页面中表单进行上传利用文件进行上传

 

*************************************************************

RequestDispatcher

Servlet能够使用javax.servlet.RequestDispatcher来处理请求转发。

 

requestDispatcher对象由servlet容器创建,用于封装一个由路径所标识的server资源。转发的动作包含:

 

1) public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;

    该方法必须在响应被提交给客户端之前调用,否则抛出IllegalStateException异常。

forward进入后。原先的Servlet将终止执行。

2) public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;

   include进入被调用的对象后,执行完相关操作后仍然会继续原先的servlet

获得RequestDispatcher对象

ServletRequest对象获取:

    public RequestDispatcher getRequestDispatcher(String path);

//Path:目标组件的路径

ServletContext对象获取:

    public RequestDispatcher getRequestDispatcher(String path);

    public RequestDispatcher getNamedDispatcher(String name);

 

servletRequestservletContext有相同的方法:getRequestDispatcher,那么差别是什么?

差别:

servletRequestgetRequestDispatcher方法。參数path能够以斜杠(/)开头,代表当前上下文根的路径。假设不用斜杠开头,则相对于当前Servlet的路径。

servletContextgetRequestDispatcher方法,參数path必需要以斜杠(/)开头。

 

posted on 2018-01-23 11:57  yjbjingcha  阅读(95)  评论(0编辑  收藏  举报

导航