http:传输数据

url:定位数据

html:显示数据

建立连接->发送请求->反应信息->断开连接


工具:httpwatch数据抓包


写一个servlert服务

 servlet服务就是一个class,和普通的类一样

 继承HttpServlet,导入响应的包(javax.servlet.http.HttpServlet);

 覆盖services(HtttpServletRequest req,HttpServletResponse res)方法


配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>web_demo_1</display-name>

  <welcome-file-list>

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

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

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

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

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

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

  </welcome-file-list>

  <servlet>(可以配置多个servlet)

      <servlet-name>two</servlet-name>  配置servlet-name

      <servlet-class>com.sun.Myservlet.Servlet</servlet-class> 配置servlet-class告诉服务器服务类存在

  </servlet>

  <servlet-mapping>

      <servlet-name>two</servlet-name>

      <url-pattern>/222</url-pattern> 配置servlet的url(可以配置多个)

  </servlet-mapping>

</web-app>




servlet配置扩展

<url-pattern>/one/*</urlpattern>配置one下所有的请求

<url-pattern>/one/</urlpattern>配置one的一个请求

<url-pattern>>*.one</urlpattern>配置一.one结尾的所有请求



servlet生命周期:

services服务是一个多线程的程序,一个services服务只有一个实例对象


tomcat服务器启动时加载服务器类,然后条用init方法初始化少生成一个实例对象,接下来每来一个请求

就启动一个线程条用services,初始化init只会调用一次,services服务是多线程服务,destroy方法当项目卸载时调用该方法


通过配置servlet加载类

<load-on-startup>num</load-on-startup>服务器启动时加载类加载顺序由num的值决定 值越小先加载


表单应用:doGet和doPost方法

根据表单提交方法调用相应的方法,doget和dopost是由services调用的

services->doGet,doPost ;doGet和doPost 都是普通方法


HttpSevletRequest对象用法(服务器将客户端的信息封装在这个对象中)

request对象可以被多个同属于一个请求的servlet共享(一个会话可以有多个请求)

1.请求行(请求的第一行的信息):

getMethod()获取请求的方式

getRequestURI()获取端口协议到?之间的字符

getQueryString()返回?之后的内容

getSchem()获取协议名称

getContextPath()返回WEb应用的根目录一以'/'开始

getRequestURL()获取?之前的内容

2.请求头:getHeaderNames();获取请求头的参数名,getHeader(parameter)获取请求头参数值

3.请求体;

getParameter(parameter)获取表单域的值

getParameterValues(parmeter);多个同名不同域的参数的值

获取网络信息:getRemoteAddr()获取客户端地址

getRemotePort()过去客户端的端口

getLocalAddr()获取服务器的地址

getLocalPort()获取服务器的端口

req.getReader() //读取文本

req.getInputStream() //读取非文本

HttpServletResponse(服务器端的响应信息被封装在这个对象中)响应信息由response对象发送给web服务器,由web服务器发给客户端

构建响应头:

设置响应头:response.setHeader("参数","值");

添加响应头:response.addHeader("参数","值");

构建响应体:

response.getWriter() //输出文本使用

response.getOutputStream() //输出非文本使用

text/html,text/xml,text/plain

请求转发与重定向:

重定向:resp.sendRedirect(url);//重定向客户端需要发送两次请求,重定向后面的语句仍然会执行,因此后面一般加return;

转发:req.getRequestDispatcher(url).forward(req, resp); //请求转发客户端只有一次请求。地址的改变是服务器内部的调用,同上其后也加return,转发时,多个servlet共享一个对象


保存状态的两种机制:

Session(服务器端,适合保存大量数据 ,安全效率高)

获取session对象:httpSession session=req.getSession()返回当前的sessio对象(唯一的,如果存在返回已有的session对象),一个session对象被一个会话所共享

session.getId()返回session对象的ID,一个浏览器只对应一个session,每当浏览器访问服务器时服务器就会产生一个session同时session对象置

Cookie为session的ID,只要Cookie有效,浏览器就可以通过Cookie确定session

session.setMaxInactiveInterval()设置session最大的空闲时间

session.invalidate()q强制session失效

Cookie(客户端,适合保存小量数据,不安全)

构造函数:

生成cookie;

Cookie cookie=new Cookie('name','value');

respon.addCookie(object Cookie) add a Cookie to servlet,this method can be used multiple times to set more than one cookie

setMaxAge() seconds ,a positive number set the maxmun available time,the cookie will be expire after the set time; a negative number means the cookie will  not stored

persistently when the web brower exit the cookie will  expire; zero means the cookie will expire;

getMaxAge()h获取有效期

setPath()设置路径

setDomain()设置域名examplple(.vim.com); 以.开头的

respon.addCookie()告诉服务器coookie对象

读取Cookie:

cookie.getName()获取cookie对象属性的姓名cookie.getValue()获取cookie属性的值

修改cookie:

setValue();setMaxAge()

删除coookie设置cookie的生命周期为0   setMaxAge()

ServletConfig对象:

ServletConfig.getInitParameter(String para)获取初始化配置参数的值

ServletConfig.getInitParameterNames()获取配置文件的初始化参数的名称,返回值是一个集合

ServletContext对象:代表当前web应用:

getRealPath()

getResoursePaths();

ServletContext对象(重要)