Servlet学习

Servlet是Java中用于处理HTTP请求的服务器端组件,它定义了与浏览器交互的规则。快速入门包括创建JavaEE项目,实现Servlet接口并配置web.xml。Servlet生命周期包括初始化、服务和销毁三个阶段。Servlet访问路径可以通过URL映射来设定,转发与重定向是两种不同的请求处理方式。GET和POST方法在HTTP中各有特点,GET用于安全、缓存的场景,而POST适合提交大量数据或敏感信息。

目录

Servlet是什么怎样用?

快速入门

执行原理

Servlet中的生命周期方法

Servlet的体系结构

Servlet访问路径

转发与重定向

 Http中get方法和post方法区别


Servlet是什么怎样用?

Servlet简单来讲,就是运行在服务器端的小程序。相当于Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则,将来我们自定义一个类,实现Servlet接口,复写方法即可。

快速入门

1.创建JavaEE项目

2.定义一个类,实现Servlet接口

如: public class ServletDemo1 implements Servlet

3.实现接口中的抽象方法

4.配置Servlet

如: 在web.xml中配置:
        <!--配置Servlet -->
        <servlet>
            <servlet-name>demo1</servlet-name>
            <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>demo1</servlet-name>
            <url-pattern>/demo1</url-pattern>
        </servlet-mapping>

执行原理

1.当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径。

2.查找web.xml文件,是否有对应的<url-pattern>标签体内容。

3.如果有,则在找到对应的<servlet-class>全类名。

4.tomcat会将字节码文件加载进内存,并且创建其对象。

5.调用其方法。

Servlet中的生命周期方法

1. 被创建:执行init方法,只执行一次

        1.1.默认情况下,第一次被访问时,Servlet被创建

        1.2.可以配置执行Servlet的创建时机

                在<servlet>标签下配置
                        1. 第一次被访问时,创建
                        * <load-on-startup>的值为负数
                        2. 在服务器启动时,创建
                        * <load-on-startup>的值为0或正整数

       1.3.Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的.

        如:多个用户同时访问时,可能存在线程安全问题。那我们怎样解决呢?解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值。

2. 提供服务:执行service方法,执行多次。如每次访问Servlet时,Service方法都会被调用一次。

3. 被销毁:执行destroy方法,只执行一次。

        注意:

                Servlet被销毁时执行。服务器关闭时,Servlet被销毁

                只有服务器正常关闭时,才会执行destroy方法

                destroy方法在Servlet被销毁之前执行,一般用于释放资源

Servlet的体系结构

Servlet访问路径

 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})

路径定义规则:

  1. /xxx:路径匹配
  2. /xxx/xxx:多层路径,目录结构
  3. *.do:扩展名匹配

转发与重定向

转发:

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/jch.jsp");
requestDispatcher.forward(request,response);

重定向:

response.sendRedirect("/jch.jsp");

转发和重定向的区别
虽然二者最终实现的功能是相同的.但是还是有很大不同的.不同之处如下:

 Http中get方法和post方法区别

  1. GET在浏览器回退时是无害的,而POST会再次提交请求。
  2. GET产生的URL地址可以被Bookmark,而POST不可以。
  3. GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  4. GET请求只能进行url编码,而POST支持多种编码方式。
  5. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  6. GET请求在URL中传送的参数是有长度限制的,而POST么有。
  7. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  8. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  9. GET参数通过URL传递,POST放在Request body中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值