• Servlet


    Servlet/JSP

       HTTP协议1.1

    http://www.baidu.com

    http1.0是短连接

    http1.1是长连接

    http://www.baidu.com/index.html

    1.使用http协议

    2.DNS(域名解析器)会把域名www.baidu.com解析为ip地址

      156.132.123.11

    3.通过端口,访问服务器上部署的应用程序。

    4.服务器和浏览器会自动创建连接

    5.服务器会把请求的内容发给浏览器,先发送文本

    6.再次请求发送图片。

      

    HTTP协议状态码

    http请求的状态是通过一个状态码来标识的。404 500

    客户端发送请求

    服务器处理请求,返回响应

     Java建立一个web应用程序。将应用程序部署到服务器上。

             需要一个web服务器(应用程序)

     Tomcat

    MyEclipse 配置tomcat

    点击window --> preferences --> 搜索Tomcat

     Servlet

    可以处理请求和返响应的Java类就叫做Serlvet

     创建Servlet步骤:

    1.创建一个java类,继承HttpServlet

    2.重写doGet/doPost方法

           3.web.xml中配置Serlvet

      Servlet生命周期

      1.初始化过程

    1)在第一次访问Servlet时候,web容器(Tomcat)会自动创建Servlet,初始 化的时候会调用init方法。只调用一次,Servlet是单例对象。也就是说一个Servlet 类只会产生一个Serlvet对象。在Servlet中除了共享信息,否则不要定义全局变量。

    2)如果想要在web容器(Tomcat)启动的时候创建Servlet

    需要在web.xml中的<servlet></servlet>标签中配置:

    随着标签中的数字顺序进行启动。

    <load-on-startup>1</load-on-startup>

    3)如果有参的init方法和无参的init方法同时存在,只执行有参的 方法。

          2.请求响应过程

    访问serlvet时,先调用service方法,service方法决定了调用doget还是dopost.

    UserServlet?method=add

                

      3.销毁过程

             调用destroy方法.

    1).web容器(Tomcat)关闭,Serlvet销毁

    2)一段时间内没有访问,自动销毁

    Getpost访问的区别

    0.get方式会访问到ServletdoGet方法,post方式会访问到doPost方法。

    1.get方式是地址栏访问,a连接只能通过get方式访问。

    2.get方式会在地址栏显示传递的参数,post不会在地址栏显示传递的参数

    3.get方式会出现重复提交的问题。Post提交方式会提示是否重新提交。

    4.get方式提交,地址栏的长度是有限制的。不能太长

    5.上传只能使用post方式。

    ServletConfig config

    主要作用是读取Serlvetweb.xml中配置的初始化信息。

    ServletContext application

    JavaWeb应用程序也可以被看成一个对象,这个对象就是ServletContext接口产生的对象,它代表了整个web应用程序。 该对象随着web容器(Tomcat)的启动而产生,随着Tomcat的关闭销毁。

    ServletContext 是java提供的接口,代表整个web应用程序,web容器(Tomcat)启动时,会提供了该接口的实现类并产生一个对象。

    获取ServletContext 对象

    1.通过ServletConfig获取

    2.this.getServletContext获取。

    作用:1.获取上下文和真实路径

          2.读取配置的初始化信息

          3.存储和获取属性值。通过setAttibute/ getAttibute 方法。

    可以在web应用程序的内存中存储一些值。这些值通过name对应value的形式存储,可以通过name获取相对应的value。存储在application对象中。所有的用户都可以访问到。

    对象

    方法

    范围

    application

    setAttribute/getAttribute

    会以name-value的形式将信息存储在对象中。所有用户都可访问到。

    session

    setAttribute/getAttribute

    当前用户都可以获取。

    request

    setAttribute/getAttribute

    请求一次后销毁。可以将属性值转发到下一个页面或者servlet

    pageContext

    setAttribute/getAttribute

    只在当前页面有效

    HttpServletRequest request 请求对象

    服务器的功能是获取客户段的请求,返回响应。接收请求的对象就是request

       所以,如果想要获取客户端的信息。那么就从request对象的方法找。

    1.接收参数。(接收服务器传递的信息,1.表单 2.地址栏)注意复选框

    2.设置编码。

    3.获取请求头信息。

    4.获取ip,端口,请求方法,请求的上下文路径等。

    5.存储和获取属性值

    6.转发(跳转到新的页面)

    HttpServletResponse  response

      1.通过流生成动态页面

      2.设置响应编码

      3.设置头信息

    每隔n秒刷新页面

    response.setHeader("refresh", "3");

    3秒后跳转到新的页面

    response.setHeader("refresh", "3;URL=main.html");

    设置状态码,重定向

    response.setStatus(302);

    response.setHeader("location", "main.html");

      4.重定向,重新定向到一个新的页面。

    跳转到新页面的方式有两种:

    1.转发(服务器跳转)

    地址栏没有发生变化,1次请求。可以获取到request范围的属性值

    2.重定向(客户端跳转)

    地址栏改变, 2次请求,没有获取request范围的属性值。

    HttpSession session 服务器会话技术

    仅适合于http协议,是http协议特有的。

    Session是服务器和客户端建立连接后,服务器自动产生的。

    其实就是服务器为每个访问服务器的浏览器开辟的单独的内存空间。

    如何获取Session对象:

    request.getSession();

    Cookie  本地会话技术  (本地---服务器  请求  服务器---本地 响应)

    由于是本地技术,所以并不是很安全。

    获取Cookie。服务器创建session后,会将sessionidCookie的形式发往客户端,每次请求时,会通过sessionid来标识客户度。

    当本地禁用Cookie之后,本地失去了唯一的标识,会造成每次访问都会产生一个新的session。导致用户的信息丢失。

    购物车。购买物品的信息该存储到什么地方。

    存储到session中。

    如果本地禁用cookie,那么该怎么解决。

    解决办法:重写URL地址。

    乱码的处理:保证整个项目编码的统一。(UTF-8 | GBK

    乱码的产生是分阶段的。

    Get方式提交需要服务器支持中文编码

    tomcat安装目录的conf目录下的server.xml中配置

    过滤器:

    1.创建一个类实现java.servlet.Filter接口

    2.在web.xml中配置Filter

        在进行多个操作之前,想要进行一些统一的动作,就可以使用过滤器

     验证用户是否登录。

    过滤方式:

    1.过滤所有资源          <url-pattern>/*</url-pattern>

    2.过滤某种类型文件 例如过滤html文件: <url-pattern>*.html</url-pattern>

    3.同时过滤多个文件类型

    4.过滤指定的serlvet <servlet-name>ServletTest</servlet-name>

    或者  <url-pattern>/ServletTest02</url-pattern>

    5.过滤指定文件     <url-pattern>/test.html</url-pattern>

    监听器

    在web中,主要功能是对ServletContext HttpSession HttpServletRequest进行监听。

    对ServletContext进行监听

    ServletContextListener 监听ServletContext对象的初始化和销毁

    ServletContextAttributeListener

    监听ServletContext的Attribute值。

    对Session监听

          HttpSessionListener 监听Session对象的初始化和销毁

          HttpSessionAttributeListener

          监听session的Attribute值。

    对Request监听

    ServletRequestListener

    ServletRequestAttrbuteListener

        

    购物车  Session

            数据库 table  cart

    class Person{   ---描述人

    }

    Person.class   ---->  Class

    人 ----  Person类

    Person.class  ----  Class类

    .class

     构造方法  成员变量  成员方法  注解 实现的接口,继承的类,泛型信息。

     反射

     获取构造方法

     获取方法 方法名称  ,方法参数

    JSP  (Java Server Page)

    在html中嵌入java代码和程序段,形成以.jsp为后缀的文件。

    Jsp如何嵌入java代码。

    三种形式:

    1.<%   %> 可以定义局部变量,编写语句。

    2.<%!  %> 可以定义全局变量,常量,方法,类。

    3.<%= %>  页面输出

    JSP中有9个内置对象。

    JSP Page指令<%@page   %>

    JSP包含指令 <%@include file=”” %>

    静态包含:不能有动态数据。

    动态包含:

    Jsp标签:

      <jsp:include page="body.jsp">

       <jsp:param value="admin1" name="username"/>

       </jsp:include>

    跳转标签

      <jsp:forward page="toForward.jsp">

         <jsp:param value="zs" name="username"/>

         </jsp:forward>

    EL表达式

       Expression Language

       为了简化JSP代码

       语法:${对象}

       EL表达式可以获取不同范围的属性值,如果属性值的key相同,那么EL表达式会从最小的范围获取。会按照:

       pageContext request session application 的范围以此获得。

    如果想要指定范围,那么就需要用到EL表达式的内置对象。

    EL的功能:

    1.获取不同范围( pageContext request session application )的属性值

    指定范围获取属性值:内置对象:

    pageScope  获取当前页面的属性值

    requestScope获取request范围的属性值

    sessionScope 获取session的属性值

    applicationScope 获取application的属性值

    2.接收参数:接收请求的URL参数。

    内置对象:

    param  获取请求的参数,对应 request.getParameter("");

    paramValues 获取复选框参数,对应request.getParameterValues("");

    3.解析对象

    通过 ${对象.属性}方式回去属性的值。

    内置对象:pageContext 代表javax.servlet.jsp.PageContext对象。

    4.获取头信息

    内置对象 header 对应:request.getHeader();

    5.获取cookie

      内置对象cookie  对应:request.getCookies();

    6.获取初始化参数

    内置对象:initParam  对应:ServletContext.getInitParamter();

    7.EL表达式支持运算符。

  • 相关阅读:
    正向代理和反向代理
    Unicode
    utf-8
    ISO 8895-1
    ProtocalBuffers学习记录
    C#基础知识
    MSBuild学习记录
    Linux学习笔记
    Jenkins学习记录
    CruiseControl.Net学习记录
  • 原文地址:https://www.cnblogs.com/coding4/p/5604947.html
Copyright © 2020-2023  润新知