Servlet

先有的Servlet,

Web.xml文件 设置servlet 的访问

因为servlet的访问优先于 下面的 file-list,所以优先访问

用servlet 来进行流程控制

书写servlet的三种方式

1. 实现  javax.servlet.Servlet接口        顶层接口

2. 继承 javax.servlet.GenericServlet    实现抽象类

3. 继承 javax.servlet.http.HttpServlet   实现子类

GET和POST的区别

1.GET傻逼不安全的因为依附于URL,POST对用户来说是不可见的是安全的

2.GET 传输的数据量较小,因为受到URL限制,POST 数据量较大

3.GET讲求可以被缓存,GET请求可以被收藏为书签,POST不行

4.GET的执行的效率比POST高

5.表单有 GET和POST请求,URL和超链接 只有GET

XML和 HTML的区别

1.XML是可扩展的标签语言,和HTML的共同点都是标签语言

2.HTML 的标签含义都是固定的,XML中的标签都是自定义的

3.作用不同:HTML是网页内容,用浏览器解释展示的

XML主要用来存储数据的(开发中常用来存储配置信息)

4.HTML语法不严格,不区分大小写,单双引号都可以用,XML是语法严格的

配置参数读取的意义:

1.把参数提取到配置信息中,大大的增加了整个代码的使用性

2.方便后期的代码维护

3.需要知道,在这里的参数读取仅仅是读取到程序里面

Servlet顶层接口中,没有doGet,doPost方法,

Servlet中的service方法中是,servletRequest 和servletResponse没有HTTP

GenericServlet中增加了一个init方法,一个重写了servlet的,一个没有重写,重写的调用了空参的

GenericServlet中实现了全部的servlet接口的方法,除了 service

自己编写一个Servlet必须重写一个doGet,doPost或者service的有参方法

处理乱码的的2种方式: POST/GET方式

GET方式:

1.在一个servlet中有效的配置(每个servlet类有一个)

<init - param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init - param>

通过 this.getServletConfig().getInitParameter("encoding");初始化配置参数

2.在所有的 servlet中有效的配置(每个项目有一个)

<Context-param>

      <param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</Context-param>

通过this.getServletContext().getInitParameter("encoding"); 初始化全局的参数

3. byte [] bytes = str.getBytes("iso-8859-1");

String cstr = new String(bytes,"utf-8");

POST方式:

      request.setCharacetEncoding("utf-8");

servlet的生命周期

1.类加载

1.截取地址栏URL中的url中的servlet路径

2.根据<url - pattern>的值,找到对应的<servlet - name>的值

3.在<servlet>标签中寻找<servlet - name> 值是 2步结果的内容

4.找到后,查找同级的<serlvet - class>,得到 该servlet类的全路径

5. 通过全路径得到该 servlet类的 大Class对象

2.创建servlet 对象(实例化)

通过大CLASS对象,创建对象。Object obj =  clazz .newInstance();

3.调用init() 初始化方法 通过反射执行方法

Method m1 = clazz.getMethod("init");

m1.invoke(obj);

4.调用service() 方法,判断是用get 还是post  通过反射执行方法

Method m2 = clazz.getMethod("service",ServletRequest.class,ServletResponse.class);

m2.invoke(obj,request,response);通过反射执行方法

5.调用destroy()  通过反射执行方法

Method m3 = clazz.getMethod("destroy");

m3.invoke(obj);

servlet类的加载的时机

1.默认的情况是 第一次访问servlet 的时候进行类加载

2.在web.xml 中配置 <load - on - startup>0</load - on -startup>

当启动服务器的时候加载,数字越小加载的时机越往前

在Servlet中 可以采用注解的方式,来代替xml的配置地址  注解中写的是 url-partten的地址

表单验证总结:

1.客户端 使用 javaScript验证 

好处:降低服务器的负担

不足:不安全,可以跳过,只能进行格式的验证,无法验证用户名是否存在

2.服务器验证,使用JSP验证

好处:安全,可以进行格式验证和业务验证

不足:增加了服务器端的负担

通过反射,封装servlet 方法,判断用反射代替

1.controller 的 servlet  继承这个 baseServlet 抽象类,

2. controller 中的 servlet 遵循调用的时候都要传输要掉用哪个方法的形式,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值