域对象

  1. 获取Servlet的配置对象ServletConfig对象
    每个Servlet都有ServletConfig对象
获取方式1
public class Demo01 extends HttpServlet {
    //获取方式一
    //声明一个成员变量 保存对象
    private ServletConfig config ;

    //初始化方法
    @Override
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        super.init(config);
        //在初始化的时候给成员变量赋值
        this.config = config;
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println(this.config);
        //可以通过ServletConfig对象获取Servlet的配置信息
        String value = this.config.getInitParameter("liubin");
        System.out.println(value);
        //获取多个配置信息
        Enumeration<String> name = this.config.getInitParameterNames();
        while (name.hasMoreElements()) {
            String element = name.nextElement();
            System.out.println(element);
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

方式2
通过父类来获取

public class Demo01 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {      
        //获取方式二(直接调用父类的方法)
        ServletConfig myConfig = this.getServletConfig();
        String value = myConfig.getInitParameter("liubin");
        System.out.println(value);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

域对象

ServletContext对象是作用返回最大的域对象,并且整个工程只有一个该对象
ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。
可以作用与整个工程,都可以使用该对象,Servlet对象之间可以利用ServletContext对象进行通讯
域对象利用了单例的特点
注意:1.所有的域对象内部都是维护了一个map集合
2.所得域对象都有setAttribute getAttribute方法

  • 如何获取ServletContext对象?
    方式1:通过ServletConfig对象获取
    方式2:通过分类来获取,该方法在ServletConfig接口中

  • 域对象的作用
    1.存值取值
    2.获取全局配置信息
    3.可以获取服务器上所有的资源真实路径
    4.可以进行请求转发
    获取Context配置信息

    ServletContext context = this.getServletContext();
    String value = context.getInitParameter(“kuner”);
    System.out.println(value);

context保存一个值

ServletContext context = this.getServletContext();
context.setAttribute(“username”, “liubin”);

取出保存在context中的值

ServletContext context = this.getServletContext();
Object object = context.getAttribute(“username”);

获取服务器上的资源真实路径

String path = this.getServletContext().getRealPath(“/WEB-INF/c.properties”);
FileInputStream fis = new FileInputStream(path);
Properties properties = new Properties();
properties.load(fis);
properties.getProperty(“key”)
获得值是key对应的值
String path = this.getServletContext().getRealPath()
方法获取文件真实路径
/WEB-INF/c.properties
指的是相对工程的路径


请求转发
1.用户只发起了一次请求
2.用户请求时并不知道内部发生了什么
实现代码

public class Demo05 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("xiaofneg借点钱给我");
    System.out.println("xiaofneg我没钱 坤有钱");
    //通过Context对象获取请求转发器 
    //注意:请求转发只能是站内(本工程)转发
    //转发的路径是相对于工程
    //这个对象就是请求转发器
    RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/demo06");
    //然后请求转发
    dispatcher.forward(request, response);
    System.out.println("qian借到了");
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

}
利用域对象调用getRequestDispatcher()方法获取请求转发器,方法括号中填的就是转发的文件的地址
执行的顺序:先执行请求转发器在执行deno06最后执行请求转发

## 响应 ##
响应分为
1.响应行
相应的状态  http协议
2.响应头
告诉浏览器我要做什么操作需要用什么编码格式来解析我的响应
3.响应体
响应浏览器的内容
代码实现

public class Demo07 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //tomcat默认的编码格式 ISO-8859-1不支持中文

    //修改编码格式
    //response.setCharacterEncoding("UTF-8");

    //设置响应头(告诉浏览器使用什么格式解析数据)
    //response.setHeader("Content-type", "text/html;charset=UTF-8");

    //二合一写法(之后在写Servlet 第一句就写这个)
    response.setContentType("text/html;charset=UTF-8");

    //接到请求后向浏览器写个字符串
    //通过响应对象response 中的流对象 回写

    //注意:你在Servlet中使用字符流那么就不能在使用字节流
    PrintWriter writer = response.getWriter();
    writer.write("刘斌");

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

}
“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值