java緩衝(2、ThreadLocal<T>)

來源:互聯網
上載者:User

標籤:

程式圖

        


描述

       ThreadCache類是ThreadLocal<T>類的封裝,UserManagerServlet要求方法裡面建立一個User對象,然後,將對象放到ThreadLocal中,然後,從UserManagerDao獲得該對象,再返回給Servlet


程式

ThreadCache

package com.tgb.util;import com.tgb.entity.User;public class ThreadCache {private static ThreadLocal<User> threadLocal;static {threadLocal= new ThreadLocal<User>();}public static User getUser(){return threadLocal.get();}public static void setUser(User user){threadLocal.set(user);}}

Servlet

package com.tgb.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.tgb.entity.User;import com.tgb.service.UserManagerService;import com.tgb.util.ThreadCache;public class UserManagerServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id = Integer.parseInt(request.getParameter("id"));String name = request.getParameter("name");String password = request.getParameter("password");User user = new User();user.setId(id);user.setName(name);user.setPassword(password);ThreadCache.setUser(user);UserManagerService userManagerService = new UserManagerService();User getUser = userManagerService.getUser();System.out.println(getUser);    response.sendRedirect(request.getContextPath() + "/index.jsp");}}

Dao

package com.tgb.dao;import com.tgb.entity.User;import com.tgb.util.ThreadCache;public class UserDao {public User getUser(){return ThreadCache.getUser();}}

增強版Demo        概述                對於上面的demo,非常的簡單,主要是讓大家瞭解ThreadLocal的功能,其在項目中真正的用途是儲存Connection,從達到Service管理事務的目的,下面將給大家介紹一個比較好的demo。        類圖概要                
         描述                 ConnectionContext是資料庫連接對象池,使用的是c3p0;                 ConnectionPoolManager是ThreadLocal<T>的封裝;                 TransactionManager是事務的封裝;                 Filter過濾請求,開啟事務,調用Servlet,最後,Filter提交事務;                 BaseDao使用泛型和反射,實現簡單的ORM思想,使程式操作的都是對象;
總結       demo2裡面知識點挺多的,是一個比較全面的例子,分頁封裝,json封裝,ThreadLocal,c3p0,事務應用,反射和泛型,自訂註解(demo,沒有應用到項目裡),有興趣的可以下載源碼看看,這裡不做過多介紹。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

java緩衝(2、ThreadLocal<T>)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.