Servlet

●Servlet的service方法结束后,Servlet引擎会检查getOutputStream和getWriter方法返回的输出流对象,是否已经调用close被关闭,如果没有,则Servlet引擎将调用close关闭输出流对象。

● 同一个response对象,getOutputStream和getWriter不能同时使用

当Servlet出现转发的时候,由于response对象不变,因此原来的Servlet和转发后的Servlet中,使用的方法必须一致。

例如test1中,使用了getOutputStream,同时又使用了this.getServletContext().getRequestDispatcher("/test2").forward(request, response);

在test2中,就不能使用getWriter方法。

而使用重定向的方式,则可以。因为是两个response对象

● Request、Response

 web服务器每次收到客户端http请求,都会创建一个代表请求的Request对象,和代表响应的Response对象。

● ServletContext

代表当前web应用,被各Servlet共享。

ServletConfig.getServletContext方法获得该对象,或直接this.getServletContext()

四个域:context、request、session、page

为整个应用配置参数:

<context-param>
  <param-name>name</param-name>
  <param-value>Context</param-value>
</context-param>

转发Servlet请求:

RequestDispatcher rDispatcher = this.getServletContext().getRequestDispatcher("/index.jsp");
rDispatcher.forward(request, response);

● Myeclipse添加Servlet源码包

https://blog.csdn.net/interest1_wyt/article/details/78589627

● ServletConfig

Servlet内置对象:Request,Response,ServletConfig,ServletContext,session,cookie。

ServletConfig为Servlet配置参数。在web.xml中添加(servlet元素内):

<init-param>
  <param-name>name</param-name>
  <param-value>rao</param-value>
</init-param>
配置的参数会封装到ServletConfig对象中,然后传给Servlet。

传递的时间和地点是,在初始换的时刻,在Servlet的init方法中

使用this.getServletConfig(),直接获得待ServletConfig对象

● 修改Servlet不重启Tomcat

tomcat安装目录下的conf/context.xml文件,在Context节点上添加reloadable=”true”

● 修改Servlet模板

myeclipse安装目录->plugins->com.genuitec.eclipse.wizards_13.0.0.me201612231634.jar->templetes->servlet.java

● 使用Myeclipse开发Servlet

将Tomcat集成到Myeclipse:windows->preferences->Servers->runtime environments,选择Tomcat服务器;

发布应用到服务器:

● 提供动态web资源

只需写一个java类,实现Servlet接口.

将Servlet api添加到classpath:D:\Softwares\Tomcat8\apache-tomcat-8.5.37\lib\servlet-api.jar

编译;

在WEB-INF\web.xml添加下面几行(Servlet名为test):

<servlet>
  <servlet-name>test</servlet-name>
  <servlet-class>servlet.firstServlet.test</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>test</servlet-name>
  <url-pattern>/test</url-pattern>
</servlet-mapping>

● 配置虚拟主机

在Engine中添加Host元素:

<Host name="www.sina.com" appBase="E:\Program\sina.com"></Host>

在conf\Catalina目录下新建www.sina.com目录。

这个网站(虚拟主机)下,可能有多个应用,例如mail、news。

当创建新的应用时,就在conf\Catalina\www.sina.com目录下新建对应的xml文件,实现访问路径到虚拟目录的映射,例如mail.xml,news.xml

在E:\Program\sina.com\news.xml中添加:<Context docBase="E:\Program\sina.com\news" />

访问:http://www.sina.com:8080/news/home.html

● web应用的目录结构

● 配置web应用于虚拟目录的映射

1. 在server.xml中的Host元素中添加:

<Context path="HelloServlet" docBase="E:\Program\Servlet\HelloServlet" />

其中path为对完访问URL路径,docBase为应用目录

重启web服务器

2.在conf/context.xml文件中,添加

特点:被所有应用共享

3.在conf\Catalina\localhost下,新建任意一个xml问题件,例如a.xml,在该文件名a,就是该应用的对外访问路径(相当于1中的path),向该a.xml中添加:

<Context docBase="E:\Program\Servlet\HelloServlet" />

当该xml名为ROOT.xml时,为缺省的应用,即访问该应用下的文件时,不需要输入该应用的对外访问路径,例如:http://localhost:8080,或http://localhost:8080/2.html 

特点:不用重启服务站

4.当应用,例如demo,被放置到Tomcat服务器下的webapps目录下时,服务器会自动将该应用映射到虚拟目录,对应的访问路径就是该应用的目录名,demo

5.在应用的WEB-INF目录下建web.xml,控制着整个web应用

添加下面的内容,可配置默认首页:

<welcome-file-list>
<welcome-file>1.html</welcome-file>
</welcome-file-list>

 

posted @ 2019-01-18 22:00  volcanorao  阅读(122)  评论(0编辑  收藏  举报