Servlet (二) --- 通过servletContext对象实现数据共享

一,ServletContext介绍

  • web容器在启动时,它会为每一个web应用程序都创建一个ServletContext对象,它代表当前web应用
  • 多个Servlet通过ServletContext对象实现数据共享
  • 获取web应用的初始化参数
  • 用ServletContext实现请求转发
  • 使用ServletContext对象读取资源文件

二,通过servletContext对象实现数据共享

通过this获得ServletContext,实现数据的共享

//存入数据
        response.setCharacterEncoding("UTF-8");
  ServletContext context = this.getServletContext();
        String username="学java的闪电侠";
        context.setAttribute("name",username);
        response.getWriter().print("设置name成功:"+username);
//读取数据
       response.setCharacterEncoding("UTF-8");
ServletContext context = this.getServletContext();
        String name = (String) context.getAttribute("name");      
        response.getWriter().print("我们获取的信息为:"+name);

三,通过servletContext对象读取网站配置文件

1,新建一个properties文件

在这里插入图片描述

driver=com.mysql.jdbc.Driver
username=root
password=123456
url=jdbc:mysql://localhost:3306/smbms

2,编写servlet类

//获取配置文件的路径
String realPath = this.getServletContext().getRealPath(
        "WEB-INF/classes/resources/database.properties");
System.out.println("获取的路径:"+realPath);

Properties properties = new Properties();
FileInputStream is = new FileInputStream(realPath);

//把文件流加载到配置文件对象中
properties.load(is);

String driver = properties.getProperty("driver");
String username = properties.getProperty("username");
String password = properties.getProperty("password");
String url = properties.getProperty("url");

//响应到网页
response.getWriter().print(driver);
response.getWriter().print(username);
response.getWriter().print(password);
response.getWriter().print(url);

3,配置web.xml

<servlet>
    <servlet-name>ServletTest03</servlet-name>
    <servlet-class>com.kuang.servlet.ServletTest03</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ServletTest03</servlet-name>
    <url-pattern>/s3</url-pattern>
</servlet-mapping>

4,访问查看

localhost:8080/demo02/s3

四,简单验证码

       //自动刷新网页
        response.setHeader("refresh","2");
        
        //验证码是一个图片 , 我们需要制作一个图片
        BufferedImage image = new BufferedImage(100,30,BufferedImage.TYPE_3BYTE_BGR);

        //图片写入一些东西
        Graphics2D graphics = image.createGraphics();
        graphics.setColor(Color.red);
        String num = String.valueOf(newRandom());
        graphics.drawString(num,10,10);

        //想办法让浏览器知道我们给的是一张图片
        response.setContentType("image/jpg");

        //让网站去打开图片
        ImageIO.write(image,"jpg",response.getOutputStream());
    }

    //生成随机数
    public int newRandom(){
        int num = (int)(Math.random()*9+1)*100000;
        return num;
    }
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树叶过河 Z

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值