Servlet(2):通過servletContext對象實現數據共享


一,ServletContext介紹

  • web容器在啟動時,它會為每一個web應用程序都創建一個ServletContext對象,它代表當前web應用
  • 多個Servlet通過ServletContext對象實現數據共享
  • 獲取web應用的初始化參數
  • 用ServletContext實現請求轉發
  • 使用ServletContext對象讀取資源文件

二,通過servletContext對象實現數據共享

1,通過this獲得ServletContext,實現數據的共享

//存入數據
        response.setCharacterEncoding("UTF-8");
  ServletContext context = this.getServletContext();
        String username="清水河";
        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);

2,運行結果


三,通過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;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM