Servlet基础

一.概念:什么是Servlet

                servlet是​​​​​​​一个java程序,是在服务器上运行以处理客户端请求并作出响应的程序

二.小结:

  • web.xml中的加载顺序:与文件当中的排列顺序无关
    • context-param(配置节)-->listener(监听器)-->filter(过滤器)-->servlet

        1.本质:获取前端的请求以及携带的数据,并将其传递给service层,将service层处理完请求之后的结果返还给web层
2.配置:两种方式
    2.1:注解方式:@WebServlet("/请求名"),请求名要与jsp里面的请求名一一对应
        eg:@WebServlet("/login")    ---->一定记得括号里面写双引号
    2.2:配置web.xml文件:(下面为方法:名字一一对应,请求名映射到具体类路径)
    
     <!-- 配置servlet的访问路径,知道访问的是哪一个servlet-->
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>com.web.servlet.Login</servlet-class>
    </servlet>
    <!--配置映射-->
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <!--servlet的访问路径,三种配置方式:
        1.完全匹配  /hello
        2.目录匹配
        3.扩展名匹配  *.do
        (一定不能混用)
        -->
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    
3.功能:
    3.1:接收jsp传过来的请求及数据,创建serviceImp的对象来实现具体的业务处理
    3.2:存取值方式:用什么存,就用什么取
        3.2.1:request.setAttribute("存放的变量的名字",要存放的变量);
        3.2.2:session.setAttribute("存放的变量的名字",要存放的变量);
            3.2.2.1:不是servlet里面的内置对象,使用前需要先创建,jsp当中不需要(因为是jsp中九大内置对象之一)
                HttpSession session = request.getSession();
    3.3:将处理完的请求结果返还到jsp
    3.4:转到jsp的两种方式
        3.4.1:请求转发:req.getRequestDispatcher("跳转的jsp路径").forward(req,resp);//携带数据将请求转发,实际上还是在原有页面,只不过数据带到了另一个页面

        3.4.2:重定向:resp.sendRedirect("main.jsp");//不携带数据跳转

4.注意事项:
    4.1:注意设置编码:
        req.setCharacterEncoding("UTF-8");
        //设置从前端传到后台的字符编码,全大写或者全小写,防止中文乱码,出现问号?-->设置请求编码
    4.2:作用域大小:page<request<session<application
        page:当前页面
        request:一次请求
        session:一次会话
        application:服务器启动到停止

三.servlet是替代了原先的do xxx.jsp

  •  <load-on-startup>
    指定当Web应用启动时,装载Servlet的次序。当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet。当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它
  • <servlet-mapping>
    用来定义servlet所对应的URL,包含两个子元素
  • <servlet-name>
    指定servlet的名称
  • <url-pattern>
    指定servlet所对应的URL
  • url-pattern匹配规则,按照优先级从高到低排列
    • 精确匹配:类似于/myServlet的精确路径
    • 通配符匹配:/*
    • 扩展名匹配:*.html,*.jpg ,.do ,.action之类的
    • 默认匹配(/)——当之前匹配都不成功时
  • 另一方面,<servlet-mapping>并不是必须的

三.步骤:

  • 创建maven项目,导入依赖
  • 创建webapp/WEB-INF目录,在项目管理里面新增xml文件
  • 用jsp写页面,然后通过javaScript里面的方法去传递参数给action,然后通过action里面的servlet名称去匹配web.xml文件里面的servlet,判断执行哪个servlet,并根据携带的参数判断具体执行哪个方法
  • servlet 继承 HttpServlet,要重写doGet和doPost这两个方法
  • 为了两种提交方式都能执行,一般在doPost方法里面,调用doGet方法,然后具体三部曲都写在doGet里面,这样不论通过哪种方式提交,都能完成相应的功能
  • 在servlet里面调用业务层的方法去执行相应的功能,并将执行的结果通过转发或者重定向的方式反馈给页面
  • 通过servlet,可以减少很多doxxx.jsp的页面,这样只需要给每一个类建一个servet,然后将每一个类具体对业务层的方法的调用以及对view层的数据反馈全部集成到一个servlet类里面,这样会使得代码更简洁,更规范。

四.Servlet生命周期

  • 实例化(一次):servlet容器创建servlet对象。默认创建servlet实例的时机:当我们发送servlet对应的请求时(在使用时创建)。类似单例模式中的懒加载方式。希望容器一旦启动,就自动创建servlet实例通过load-on-startup=1设置,正数数值越低优先级别越高,优先实例化
  • 初始化(一次):servlet实例一旦创建,就开始初始化一些参数配置,我们可以做一些参数配置,比如编码,可以在web.xml或注解中配置
  • 就绪状态(get,post服务多次):当发送对应的servlet请求时,会调用service()方法,注意此时不会重新创建servlet实例,也不会调用init()方法
  • 销毁状态(多次):调用了destroy()方法后,当前servlet实例将会被标记为回收垃圾,会对servlet实例进行清除处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值