您的位置:首页 > 运维架构 > Tomcat

tomcat、servlet学习

2016-04-05 19:05 555 查看
1、 配置端口号: 在conf/server.xml文件中配置端口号 

 <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

2、配置欢迎界面:

需要在我们应用目录下app/WEB-INF目录下配置web.xml文件

配置如下:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee"  version="3.1">

<welcome-file-list>

        <welcome-file>index.html</welcome-file>

        <welcome-file>index.htm</welcome-file>

        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>
<web-app/>

3、http协议请求和响应

http完整请求包括:请求行(请求方式+资源地址+协议版本),请求头,请求正文。

Post请求消息:

POST /app/a.html HTTP/1.1 请求行(请求方式  资源地址  协议版本)

Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, 请求头(头名称,头值)

application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap,

Content-Type: application/x-www-form-urlencoded

Cache-Control: no-cache

 

name=abc&age=100 (请求正文)

响应消息:响应行(响应协议+ 状态码+状态信息),响应头,响应正文。

例如;

HTTP/1.1 200 OK  响应行(响应协议 状态码 状态信息)

Server: Apache-Coyote/1.1  响应头
(头名称,头值)

Accept-Ranges: bytes

Content-Length: 13

Date: Wed, 19 N

 

hello world!!  响应正文

4、状态码:

200(正常)   表示一切正常,返回的是正常请求结果

302/307(临时重定向)  指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。

304(未修改)  表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。

404(找不到) 服务器上不存在客户机所请求的资源。

500(服务器内部错误)  服务器端的程序发生错误

5、 请求头和响应头

请求头信息:

 * Accept: 浏览器告诉服务端, 浏览器可接受的MIME类型

  MIME类型: 相当于操作系统下的文件类型。

是由大类型和小类型组成: text/html;

对应的关系在conf/web.xml中查询

   Accept-Charset: 浏览器告诉服务端, 浏览器支持哪种字符集

   Accept-Encoding: 浏览器告诉服务端, 浏览器能够进行解码的数据编码方式,比如gzip

   Accept-Language: 浏览器告诉服务端,浏览器支持的语言种类

   Host: 浏览器告诉服务端,浏览器所在的主机

 * Referer: 浏览器告诉服务端,当前页面从哪里来的。

用处: 1. 用来记录广告的信息   2. 防盗链

  Content-Type: 浏览器告诉服务端 ,内容类型   If-Modified-Since: 浏览器告诉服务端修改的时间

   Content-Length: 浏览器告诉服务端 请求正文内容长度

   Connection: 浏览器告诉服务端,连接的状态

   *****Cookie: 浏览器告诉服务端 ,浏览器携带的Cookie

   Date: 浏览器告诉服务端,发送请求的时间

 

  响应头信息

 * Location : 服务端用来告诉浏览器,请求需要重定向.(必须结合状态吗302使用)

   Server : 服务端用来告诉浏览器,服务器的类型

 * Content-Encoding: 服务端用来告诉浏览器,服务器对数据采用的编码

    Content-Length:  服务端用来告诉浏览器,响应正文的长度

    Content-Language: 服务端用来告诉浏览器,zh-cn服务发送的文本的语言

 *Content-Type: 服务端用来告诉浏览器,你要用哪个码表来解析二进制数据

 * Last-Modified : 服务端用来告诉浏览器,访问资源的最后修改时间

 *Refresh:服务端用来告诉浏览器,多长时间刷新一次

 *Content-Disposition: 服务端用来告诉浏览器,以下载文件的方式打开文件

 * Expires: -1 : 服务端用来告诉浏览器,不要缓存 

Cache-Control: no-cache (1.1)   

 Pragma: no-cache   (1.0)

 ***** Set-Cookie: 服务端用来告诉浏览器,要存储的内容

6、servlet配置

在WEB-INF目录下的web.xml文件中中:

 <servlet>

    <servlet-name>Manager</servlet-name>  //servlet名称

    <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>  //servlet对应字节码文件

    <init-param>

      <param-name>debug</param-name>

      <param-value>2</param-value>

    </init-param>

  </servlet>

<servlet-mapping>

    <servlet-name>Manager</servlet-name>     //servlet名称

      <url-pattern>/text/*</url-pattern>         //访问路径匹配

  </servlet-mapping>

7. servlet生命周期

默认情况下,servlet对象在第一次请求的时候调用构造函数创建, 创建之后自动调用带参的init方法,然后调用service方法.destroy方法在停止服务器或者停止应用的时候调用。整个过程中,init方法和destroy方法只会调用一次,而service方法会反复调用。

8 servlet url匹配

配置优先级:  精确匹配  >以/开头的匹配>以*开头的匹配

如果配置成/ 那么就是一个缺省的servlet,此Servlet处理所有找不到匹配路径的url

9.request.getParameter("xxx"): 控件名不存在返回null;若文本框没有输入,返回“”空字符串;若是单选或者多选没有输入,返回null;

10. 反射使用时注意参数,invoke的参数是可变的,必须告诉编译是否要拆分。

 String[] stringArray = new String[]{"Cafe","Baby"}; 

 arrayInputMethod.invoke(object, new Object[] { stringArray });

参考文件  http://xiaolongfeixiang.iteye.com/blog/1772867

11
servlet 中文乱码


参考文件1  http://blog.csdn.net/longyuhome/article/details/7856270

参考文件2  http://blog.csdn.net/xiazdong/article/details/7217022

12
接口 servletConfig 和ServletContext


servletConfig:当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。

作用:

拿去初始化参数、获得ServletContext对象、获取servlet名称。

ServletContext:每一个web应用对应一个ServletContext。

 作用:

1.利用ServletContext实现数据共享;
 

2.通过servletContext对象获取到整个web应用的配置信息

 3.通过servletContext对象实现servlet转发

4.通过servletContext对象读取资源文件

13 cookie

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

1. Cookie属性:

1) name: Cookie的名字

2) value: Cookie的值

3) path : 可选的,Cookie的存储路径 。默认情况下存储的路径是访问的Servlet所在的路径目录。

4) MaxAge: 可选,最大的存活时间。Cookie默认情况下是存放在缓存区中的,设置MaxAge后,可能存在硬盘;

2. 服务端如何发送Cookie给浏览器

HttpServletResponse.addCookie(javax.servlet.http.Cookie)

每个网站最多支持20个Cookie,总共支持最多300个,每个Cookie最大4kb. (Cookie的资源是非常稀少的,Cookie中存储的数据都是非常必要的重要的数据。)

3.服务端如何获得浏览器所携带的Cookie

HttpServletRequest.getCookies(). 

4. 服务端如何删除Cookie

由于服务端没有提供删除的方法,因此采用创建相同的Cookie,设置存活时间为0的办法,覆盖已经存在的Cookie。

5.如何唯一的确定一个Cookie

  域名+ 访问路径 + Cookie的名字

6.浏览器到底带不带Cookie,谁说了算呢?

  浏览器到底带不带Cookie是由浏览器说了算。

  浏览器通过判断,  你在地址栏中敲入的资源地址. starWith(在硬盘上存储的Cookie里面存储的路径) 为true ,那就带,否则就不带.



14.Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器,创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: