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表达式支持运算符。

原文地址:https://www.cnblogs.com/coding4/p/5604947.html