JavaBean、MVC、Filter和Listener
JavaBean
JavaBean 是一種JAVA語言寫成的可重用組件,
物體類(pojo),
JavaBean有特殊的寫法:
- 必須要有一個無參構造
- 屬性必須私有
- 必須要對應的set/get方法
本質就是一個java類
一般用來和資料庫欄位做映射
ORM:物件關系映射
- 表--->類
- 欄位--->屬性
- 行記錄--->物件
package pojo;
public class People {
private int id;
private String name;
private int age;
private String address;
public People() {
}
public People(int id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "People{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
MVC三層架構
MVC:Model模型,View視圖,Controller控制器
MVC是一種架構模式,是一種軟體設計規范,是將業務邏輯、資料、顯示分離的方法來組織代碼,
- Model(模型):資料模型,提供要展示的資料,因此包含資料和行為,可以認為是領域模型或JavaBean組件(包含資料和行為),不過現在一般都分離開來:Value Object(資料Dao) 和 服務層(行為Service),也就是該模型提供了模型資料查詢和模型資料的狀態更新等功能,包括資料和業務,
- View(視圖):負責進行模型的展示,一般就是我們見到的用戶界面,客戶想看到的東西,
- Controller(控制器):接收用戶請求,委托給模型進行處理(狀態改變),處理完畢后把回傳的模型資料回傳給視圖,由視圖負責展示,
MVC有多種,
最典型的MVC 就是 J S P + s e r v l e t + j a v a b e a n 的模式
早期架構:

用戶直接訪問控制層,控制層直接訪問資料庫
弊端:過于臃腫,不利于維護
經典的MVC三層架構:


Filter
Filter也稱之為過濾器,它是Servlet技術中最實用的技術,Web開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp, Servlet, 靜態圖片檔案或靜態 html 檔案等進行攔截,從而實作一些特殊的功能,例如實作URL級別的權限訪問控制、過濾敏感詞匯、壓縮回應資訊等一些高級功能,

用來過濾網站的資料,
Filter開發步驟:
- 導包,除了上面的依賴,如果需要連接mysql還要匯入mysql依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
-
撰寫過濾器
注意:實作的Filter一定是servlet包的Filter public class MyFilter implements Filter{ // 初始化:服務器啟動 @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("已經初始化"); } // 動作 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 解決亂碼問題 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); System.out.println("過濾器執行前....."); chain.doFilter(request,response);//將引數傳給下一個過濾器,chain過濾器鏈 System.out.println("過濾器執行后....."); } // 銷毀:服務器關閉 @Override public void destroy() { System.out.println("已經銷毀"); } } -
在web.xml中配置過濾器
<filter> <filter-name>MyFilter</filter-name> <filter-class>Filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <!-- 只要是url :/hello的任何請求都會經過過濾器--> <url-pattern>/hello/*</url-pattern> </filter-mapping>
通過這樣的例子,因為filter 所以/hello路徑下的沒有亂碼,其他的中文依舊亂碼
Listener
-
實作一個監聽器的介面:有一堆監聽介面什么滑鼠事件、鍵盤事件等等
public class MyFilter implements HttpSessionListener{ // session創建觸發 @Override public void sessionCreated(HttpSessionEvent se) { } // session銷毀觸發 @Override public void sessionDestroyed(HttpSessionEvent se) { } } -
在web.xml中注冊:
<listener> <listener-class>servlet.MyFirstServlet</listener-class> </listener>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/556391.html
標籤:其他
上一篇:高并發場景下,6種解決SimpleDateFormat類的執行緒安全問題方法
下一篇:返回列表
