tomcat、servlet学习

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中取出数据为用户服务。



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值