Servlet

Servlet
    Servlet 的生命周期(重点)
        Servlet 的创建过程----Tomcat 服务器
        Servlet 初始化:init()   init(SetvletConfig config)
        Servlet 的服务方法:业务方法
        Servlet 销毁过程
        
    Servlet 是一个单实例多线程的普通的 java 类
        校验多线程的安全问题的标准
    Servlet 的两个重要对象
        servletConfig:servlet 的配置对象
        ServletContext:全局管理者对象(一个web application 只有一个ServletContext)
            1)获取上下文路径:  /项目名称/url-
            2)可以请求转发
            3)可以作为域对象使用:request  servletContext
            4)获取某个文件的真是路径
            5)如果不借助于 servletContext 对象,要获取 classes 目录文件路径只能使用类加载器 classLoader
MyFirstServlet:
package com.bite.a_servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * servlet
 * 开发者不会new  MyFirstServlet()
 */
public class MyFirstServlet extends HttpServlet {

    //覆盖doGet()/doPost()方法
    //doxx....

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //想浏览器输出内容
        //设置编码
        response.setContentType("text/html;charset=utf-8");

        response.getWriter().write("hello,这是我的第一个Servlet...");

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
回顾
http协议
    http1.1/1.0
    请求行 + 请求头
    提交方式 uri:/xxxServlet   htt协议的版本
    常见请求头
    
    referer:非法链接
        判断如果当前 referer 为 null || 不包含一些广告页面
    User-agent:当前浏览的类型————判断使用的浏览器的类型
    Host:http://localhost
    Connection:keep-alive
    
    Request
        1)Tomcat 服务器启动——>创建 Servlet 对象
        2)将 request 对象封装到了 HttpServlet 中——>HttpServletRequest
        3)解析 HttpServlet 中的一些内置方法:初始化
        
    
    HttpServletRequest
    Http://localhost:8080/hello
    
    
    如何获取请求的参数数据(表单中提交过来的)
    通过的方法获取参数数据
    
    String value = getParameter(String name); 获取单个参数
    获取所有参数名称:
        getParameterName(); ----> Enurmation(类似于 Iterator)
                                    hasMoreElement();
                                    nextElement();
        getParameterValue():获取一个参数对应的多个值(单选按钮/复选按钮)
        
        
        
    响应信息:
        通过状态码:判断响应是否成功
        
        Status:
            200  成功响应
            500  服务器出现异常了
                Servlet (和业务相关的数据)由Tomcat
            404  请求 url 路径有问题
            302  进一步请求
    
    响应头
        Location:一个地址    + 302:重定向
        简写方式:response.sendRedirect("/项目名称/hello.html)
        
    重定向的特点:
        发送了  两次请求(产生两个 request 对象)
            request:本身域对象(共享数据)
    
    重定向/请求转发(ServletContext对象)跳转页面
            reflesh:定时刷新或者经过 n 秒跳转页面
            响应头(以下载方式打开)
            文件下载:使用第三方 jar 包  commons-io



tomcat:启动--优先在 web.xml 寻找动态资源文件--->当前内部路径静态资源文件
\
伪代码
ServletContext 的其他作用:
1)作为域对象使用
2)请求转发

请求转发和重定向的区别?

使用 Servlet:login.html   用户登录案例
    Servlet
    数据库连接池:c3p0
    MySQL 的驱动
    Commons-dbutils:jdbc 封装的工具类
    c3p0.xml 配置文件读取 MySQL 链接信息
    
JavaEE:会话管理技术
Cookie 和 Session
    Cookie:存储到浏览器(只能存储 String 类型的数据)
    相关API
        Cookie cookie = new Cookie(String key,String value) ;
        //有服务器将 cookie 信息携带给浏览器
        response.add Cookie(cookie) ;
        //携带一个set-Cookie:key=value
    Session:存储到服务器   (JSESSIONID)
回顾
Servlet 生命周期
    基于 Java 的反射机制
//获取构造器 getConstructor(Classparams...)
//创建实例对象:newInstance() ;
//获取 Method 对象:getDeclaredMethod(String name,参数的)
Method:里面的 invoke(实例对象,实际参数) ;


初始化:
    Init(ServletConfig config)
    Service(request,response):servlet 的业务服务方法
    
Servlet 的两个重要对象:
    servletConfig:servlet 的配置对象
        一个 servlet 可以有多个 Servletconfig 对象
        Servlet 的初始化参数(web.xml servlet 的配置信息去设置)
    

获取 初始化参数:getInitParameter(String name) ;
                getInitParameterName() ;

Servlet  的加载时机:  数字越大,优先级
服务器在启动时,servlet 对象就被创建

Servlet 是一个单实例多线程的
在内存中 servlet 对象只会创建一次,存在多线程安全问题

使用同步代码块/同步方法(非静态的同步:锁对象:this)
                        静态的同步方法:类名.class


ServletContext:
    特点:一个项目中代表一个 ServletContext 对象(全局管理者对象)
    1)获取上下文路径: /web application 项目名称/请求的 url-pattern
    2)获取全局参数:
        web.xml 中
什么是域对象?
(就是为了)共享数据 在不同的 jsp/servlet 之间保存数据,获取数据

域对象:
    ServletContext 是最大的一域
    
ServletContext 的作用:保存数据,获取数据(共享数据)
获取文件真实路径   类加载器.getRealPath()

请求转发和重定向的区别:
    1)地址是否发生变化
        前者不会
        后者进一步请求会发生变化
    2)是否需要用到域对象
        前者在业务中跳转页面,需要用域对象(request 域)
        后者在跳转页面后,无法从 request 域中获取数据
    3)从内存角度的 request 对象
        前者始终只有一个 request 对象(还需要用到业务需求上)
        后者会产生两个 request 对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值