程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 10種Java開辟者編寫SQL語句經常見毛病

10種Java開辟者編寫SQL語句經常見毛病

編輯:MSSQL

10種Java開辟者編寫SQL語句經常見毛病。本站提示廣大學習愛好者:(10種Java開辟者編寫SQL語句經常見毛病)文章只能為提供參考,不一定能成為您想要的結果。以下是10種Java開辟者編寫SQL語句經常見毛病正文


起首來剖析下需求,web法式後台須要認證,後台頁面包括多個頁面,最通俗的辦法就是為每一個url添加認證,然則如許就須要每一個每一個綁定url的後台函數都須要添加相似或許雷同的代碼,然則如許做代碼就過度冗余,並且晦氣於擴大.

接上去我們先不談及裝潢器,我們都曉得Python是個很壯大的說話,她可以將函數當作參數傳遞給函數,最簡略的:

def p():
  print 'Hello,world'

def funcfactor(func):
  print 'calling function named', func.__name__
  func()
  print 'end'

funcfactor(p)
# 輸入為:
# calling function named p
# Hello,world
# end

了如指掌的法式,界說一個函數p(),將函數p當作參數傳遞給喊出funcfactor,在履行p函數前後加上一些舉措.

我們還可以這麼做:

def p():
  print 'Hello,world'
def funcfactor(func):
  print 'calling function named', func.__name__
  return func

func = funcfactor(p)
func()
# 輸入為:
# calling function named p
Hello,world

正如你看到的,我們可以將函數前往然後付與一個變量,留待稍後挪用.然則這類情形下我們要想在函數履行後做點甚麼就弗成能,然則我們的Python是壯大的,Python可以在函數中再嵌套一個函數,我們可以像上面這麼做:

def p():
  print 'Hello, world'

def funcfactor(func):
  def wrapper():
    print 'do something at start'
    func()
    print 'do something at end'
  return wrapper

func = funcfactor(p)
func()
#輸入為:
# do something at start
# Hello, world
# do something at end

上面我們來看看裝潢器,下面的代碼固然完成的一個很艱苦的義務,然則還不敷優雅,並且代碼不相符Python的哲學思惟,所以裝潢器就回聲而出,裝潢器沒有和下面的道理雷同,異樣用於包裝函數,只是代碼完成上加倍優雅和便於浏覽.裝潢器以@開首前面跟上裝潢器的稱號,緊接著下一行就是要包裝的函數體,下面的例子用裝潢器可用以下方法完成:

def decorator(func):
  def wrapper():
    print 'do something at start'
    func()
    print 'do something at end'
  return wrapper

@decorator
def p():
  print 'Hello, world'

p()
#輸入為:
# do something at start
# Hello, world
# do something at end

現實上裝潢器並沒有機能方面或其他方面的晉升,僅僅是一種語法糖,就是下面一個例子的改寫,如許加倍優雅和便與浏覽. 假如我們的p()函數不想僅僅只輸Hello,world,我們想向某些我們指定的人打召喚:

def decorator(func):
  def wrapper(*args, **kargs):
    print 'do something at start'
    func(**kargs)
    print 'do something at end'
  return wrapper

@decorator
def p(name):
  print 'Hello', name

p(name="Jim")
#輸入為:
# do something at start
# Hello Jim
# do something at end

裝潢器在裝潢不須要參數的裝潢器嵌套函數不是必需得,假如被裝潢的函數須要參數,必需嵌套一個函數來處置參數. 寫到這裡想必年夜家也曉得裝潢器的用法和感化.如今回到正題,若何優雅的給後台url加上驗證功效?毫無疑問我們應用裝潢器來處置:

def blog_auth(func):
  '''
  界說一個裝潢器用於裝潢須要驗證的頁面
  裝潢器必需放在route裝潢器上面
  '''
  # 界說包裝函數
  def wrapper(*args, **kargs):
    try:
      # 讀取cookie
      user = request.COOKIES['user']
      shell = request.COOKIES['shell']
    except:
      # 湧現異常則重定向到登錄頁面
      redirect('/login')

    # 驗證用戶數據
    if checkShell(user, shell):
      # 校驗勝利則前往函數
      return func(**kargs)
    else:
      # 不然則重定向到登錄頁面
      redirect('/login')
  return wrapper

可以再須要驗證的處所添加blog_auth裝潢器:

@route('/admin:#/?#')
@blog_auth
def admin():
  '''
  用於顯示後台治理首頁
  '''
  TEMPLATE['title'] = '儀表盤 | ' + TEMPLATE['BLOG_NAME']
  TEMPLATE['user'] = request.COOKIES['user']
  articles = []
  for article in db.posts.find().sort("date",DESCENDING).limit(10):
    articles.append(article)

  # 將文章列表交給前台模版
  TEMPLATE['articles'] = articles
  return template('admin.html',TEMPLATE)

至此bottle驗證的成績就很優雅的用裝潢器處理了.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved