① MVC如何使用Log4Net進行錯誤日誌記錄
在Web應用運行過程中,我們難免會遇到程序運行異常,這個時候我們就應該將異常信息記錄下來,以便開發人員和維護人員對異常原因進行還原,對異常原因進行修復。在ASP.NET平台中進行日誌記錄的組件也有很多,如Log4Net、CommonLogging等,我們這里選用Log4Net進行異常日誌的記錄。
1. 捕獲異常
在ASP.NET MVC中提供了一個全局的異常處理過濾器:HandleErrorAttribute,可以通過該過濾器捕獲異常信息。
我們在Models文件夾下新建類型Log4ExceptionAttribute,繼承HandleErrorAttribute類,同時重寫OnException方法來捕獲異常數據:
using System.Web.Mvc;namespace PMS.WebApp.Models{ public class Log4ExceptionAttribute:HandleErrorAttribute { ///
/// 重寫OnException方法來捕獲異常數據 ///
///public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); //捕獲當前異常數據 var ex = filterContext.Exception; } }}
新建過濾器後我們還需要在Global文件中調用的RegisterGlobalFilters方法中完成自己定義異常處理過濾的注冊。
using System.Web.Mvc;using PMS.WebApp.Models;namespace PMS.WebApp{ public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { //filters.Add(new HandleErrorAttribute()); filters.Add(new Log4ExceptionAttribute()); } }}
2. 考慮到多用戶並發操作時可能產生的問題,我們需要新建一個隊列來進行異常信息的暫存,同時開辟一個線程專門對隊列中的異常信息進行處理。
在Log4ExceptionAttribute類中新建一個靜態的`異常類型的隊列,在發生異常後,程序自動觸發OnException方法,方法中將當前的異常信息入隊後,跳轉到錯誤頁面。
using System;using System.Collections.Generic;using System.Web.Mvc;namespace PMS.WebApp.Models{ public class Log4ExceptionAttribute:HandleErrorAttribute { public static QueueExceptions=new Queue(); ///
/// 重寫OnException方法來捕獲異常數據 ///
///public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); //捕獲當前異常數據 var ex = filterContext.Exception; //將異常數據入隊 Exceptions.Enqueue(ex); //跳轉到錯誤頁面 filterContext.HttpContext.Response.Redirect("/Error.html"); } }}
Log4Net的配置是在應用程序配置文件中進行的,我們先在配置文件中進行Log4Net的配置。Log4Net需要配置的節點位置和SpringNet完全相同,首先需要在configSessions中新增子節點,然後在configuration節點中增加log4net節點完成具體配置。
...
在配置文件中可以對日誌記錄的信息、格式、文件名等作出具體的配置,下面是配置信息的詳解
<"1.0"?>
在Global文件中的Application_Start方法中開啟一個線程,用於將隊列中的錯誤信息寫入日誌文件。
using System.Linq;using System.Threading;using System.Web.Http;using System.Web.Mvc;using System.Web.Optimization;using System.Web.Routing;using log4net;using PMS.WebApp.Models;using Spring.Web.Mvc;namespace PMS.WebApp{ // 注意: 有關啟用 IIS6 或 IIS7 經典模式的說明, // 請訪問 http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : SpringMvcApplication//HttpApplication { protected void Application_Start() { log4net.Config.XmlConfigurator.Configure();//讀取Log4Net配置信息 AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //開啟一個線程,掃描異常信息隊列. var filePath = Server.MapPath("/Log/"); ThreadPool.QueueUserWorkItem((a) => { while (true) { //判斷隊列中是否有數據 if (Log4ExceptionAttribute.Exceptions.Any()) { //出隊一條異常信息 var ex = Log4ExceptionAttribute.Exceptions.Dequeue(); //若異常信息不為空 if (ex == null) continue; //將異常信息寫入到日誌文件中 var logger = LogManager.GetLogger("errorMsg"); logger.Error(ex.ToString()); } else { //若異常信息隊列為空,則線程休息三秒 Thread.Sleep(3000); } } }, filePath); } }}
成功完成錯誤日誌的配置。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。
② webapi GET介面出現List參數,ajax怎麼傳值
return success後 應該在ajax中跳轉頁面 function editRole(id){ var obj = new Object(); obj.id = id; $.ajax( { type : 'POST', url : getRootPath() + "/user/checkUsedRole", data : $.toJSON(obj), dataType : 'json', contentType : 'app...
③ 自營性電商項目④
本次需要執行的SQL語句大致是:
關於欄位列表,應該包括:
在 csmall-pojo 的根包下的 vo 包下創建 CategoryDetailsVO 類,封裝以上設計的欄位對應的屬性:
在 CategoryMapper 介面中添加:
在 CategoryMapper.xml 中添加配置:
在 ICategoryService 中添加:
在 CategoryServiceImpl 中執行查詢並返回。
在 CategoryController 中添加:
在 CategoryControllerTests 中測試:
管理員及許可權的管理,涉及的數據表有:
當某個管理員嘗試登錄時,必須實現」根據用戶名查詢此管理員的信息,至少包括id、密碼、許可權「,需要執行的SQL語句大致是:
接下來,在根項目中創建 csmall-admin 模塊(與 csmall-proct 類似),並在其下創建 csmall-admin-service 和 csmall-admin-webapi 這2個子模塊(與 csmall-proct 的2個子模塊類似),然後,盡量在 csmall-admin-webapi 中實現以上查詢功能:
最後,關於Key的使用,通常建議使用冒號區分多層次,類似URL的設計方式,例如:
Spring Security 是用於 解決認證與授權的框架 。
在根項目下創建新的`csmall-passport`子模塊,最基礎的依賴項包括`spring-boot-starter-web`與`spring-boot-starter-security`(為避免默認存在的測試類出錯,應該保留測試的依賴項`spring-boot-starter-test`),完整的`csmall-passwort`的`pom.xml`為:
調整完成後,即可啟動項目,在啟動的日誌中,可以看到類似以下內容:
Spring Security有默認登錄的賬號和密碼( 以上提示的值),密碼是隨機的,每次啟動項目都會不同。
Spring Security默認要求所有的請求都是必須先登錄才允許的訪問,可以使用默認的用戶名`user`和自動生成的隨機密碼來登錄。在測試登錄時,在瀏覽器訪問當前主機的任意網址都可以(包括不存在的資源),會自動跳轉到登錄頁(是由Spring Security提供的,默認的URL是:http://localhost:8080/login),當登錄成功後,會自動跳轉到此前訪問的URL(跳轉登錄頁之前的URL),另外,還可以通過 http://localhost:8080/logout 退出登錄。
Spring Security的依賴項中包括了 Bcrypt演算法 的工具類,Bcrypt是一款非常優秀的密碼加密工具,適用於對需要存儲下來的密碼進行加密處理。
如果要使得Spring Security能使用資料庫中的信息(資料庫中的用戶名與密碼)來驗證用戶身份(認證),首先,必須實現「根據用戶名查詢此用戶的登錄信息(應該包括許可權信息)」的查詢功能,要實現此查詢,需要執行的SQL語句大致是:
要在當前模塊(`csmall-passport`)中實現此查詢功能,需要:
- [`csmall-passport`] 在`pom.xml`中添加對`csmall-pojo`的依賴
- [`csmall-passport`] 在`src/main/java`下的`cn.celinf.csmall.passport`包下創建`mapper.AdminMapper.java`介面
- [`csmall-passport`] 在介面中添加抽象方法:
- 在`src/main/resources`下創建`mapper`文件夾,並在此文件夾下粘貼得到`AdminMapper.xml`
- 在`AdminMapper.xml`中配置以上抽象方法映射的SQL查詢:
- 完成後,還應該編寫並執行測試
根據有效的用戶名查詢出的結果例如:
④ One or more validation errors occurred是什麼錯!
錯在沒有允許站點通過驗證,重新添加以後能解決該問題。步驟如下:
1、直接在電腦瀏覽器那裡打開設置菜單,選擇圖示項跳轉。
⑤ h5跳轉到移動端地圖網頁打開地圖app
騰訊地圖: https://lbs.qq.com/webApi/uriV1/uriGuide/uriWebMarker
高德地圖: https://developer.amap.com/api/uri-api/guide/mobile-web/point
網路地圖: http://lbsyun..com/index.php?title=uri/api/web
⑥ h5就是頁面嗎,還是微信小程序
h5就是html5的簡稱,現在h5還有一個含義,因為很多人不懂h5是什麼東西,但是都知道哪些炫酷的邀請函,節日卡等等是用h5技術做出來的,然後很多人就認為這樣的頁面就叫做h5。
其實h5就是html5, 它是html的升級,它配合css3+javascript可以寫出各種各樣的炫酷頁面。
它是可以基於微信平台的(可以是小程序的形式,可以是公眾號的推文等等),也可以基於任何的其他平台,也可以是個人伺服器等等。當然現在用得比較多的場景還是基於微信平台的。
而HR問你的會不會H5,一般指的是你會不會寫單頁面(即用html5+css3+javascript技術開發的頁面(主要是 canvas 的熟練使用))
其實H5在我們開發眼裡是一種技術,在其他使用者眼裡是一種頁面