JavaWeb之MVC开发模式之商品实例CURD详解
文章目錄
- 三層MVC開發模式架構
- 一.先建立目標類對象:Curriculum。
- 三,過濾層Filter
- 四.增加商品
- 4.1 增加前端adds.jsp
- 4.2 增加的servlet服務
- 五.刪除課程
- 五.修改操作
- 六.修改課程
- 實驗總結
三層MVC開發模式架構
使用自己設計的商城實體類創建對應的數據庫表和類完成增刪改查管理模塊。
(1)不使用MVC設計模式完成增刪改查管理功能。
(2)使用MVC設計模式完成增刪改查管理功能。
(3)對比(1)和(2)理解使用MVC模式的優勢。
一.先建立目標類對象:Curriculum。
屬性對象為:ID,curriculumName,price,introduction。
二.建立DAO層,作用于對于Mysql數據庫的增刪改查的操作。
對于servlet與數據庫操作CURD之間寫了一個FService,便于代碼的維護和排除管理。具體代碼如下:
CurriculumDao代碼如下:
FService代碼如下:
CurriculumDao tDao=new CurriculumDao();public List<Curriculum> GetAllCurriculum(){List<Curriculum> list=null;try {list=tDao.GetAllCurriculum();} catch (SQLException e) {e.printStackTrace();}return list;}public Curriculum selectTypeNameByID(int feid){Curriculum type=null;try {type=tDao.selectTypeNameByID(feid);} catch (SQLException e) {e.printStackTrace();}return type;}public Curriculum select(int id) {Curriculum f=null;try {f = tDao.select(id);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return f;}public void insert(Curriculum f) {try {tDao.insert(f);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void update(Curriculum f) {try {tDao.update(f);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public boolean delete(int id) {try {tDao.delete(id);return true;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}}三,過濾層Filter
過濾器是指“過濾器”,它是客戶端和服務器資源文件之間的過濾器。
在訪問資源文件之前,通過一系列過濾器對請求進行修改和判斷,對不符合規則的請求進行攔截或中途修改;還可以過濾、攔截或修改響應。
作用:用來過濾網站的數據。
?處理中文亂碼
?登錄驗證等等
具體代碼如下:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)throws ServletException, IOException {req.setCharacterEncoding("utf-8");//解決請求過程的亂碼chain.doFilter(req, resp);}需要注意,我們配置注冊url映射寫一下任何請求訪問都需要經過過濾層,這樣就實現了對于中文字符的過濾與轉碼。
1.@WebFilter(filterName = "EncodeFilter",urlPatterns = "/*")四.增加商品
寫一個form表單,寫三個輸入框,獲取到課程名稱,課程價格,課程介紹。
傳值到映射路徑為Curriculum_add的servlet中。
4.1 增加前端adds.jsp
<form class="form-inline" method="post" action="/MVC_war_exploded/Curriculum_add">課程名稱:<input type="text" class="form-control" id="input_curriculumName" name="curriculumName" placeholder="名稱" required="required" style="width: 60% "><br/>課程價格:<input type="text" class="form-control" id="input_price" name="price" placeholder="價格" required="required" style="width: 60%"><br/>課程介紹:<input type="text" class="form-control" id="input_introduction" name="introduction" placeholder="課程" required="required" style="width: 60%"><br/> <input type="submit" class="btn btn-warning" value="添加課程教程"/>4.2 增加的servlet服務
獲取到前端發來的帶參請求,傳遞給fService里然后調用Dao層,實現了對于數據項Mysql里添加數據的操作。
Adds.jsp->添加我們的目標商品:
發起請求后處理跳轉結果頁面:
五.刪除課程
刪除商品的按鈕設計在list前端展示所有課程頁面里。
1.<a class="btn btn-danger" href="/MVC_war_exploded/Curriculum_delete?id=${f.id }">刪除</a>當發生點擊事件,向映射路徑為Curriculum_delete的servlet發起了一個帶參請求。
Curriculum_delete的servlet代碼如下:
由FService調用DAO層執行刪除sql語句的操作:
刪除執行結果:
五.修改操作
修改和刪除大致相同,在list頁面里加一個修改的按鈕如下:
<a class="btn btn-primary" href="/MVC_war_exploded/Curriculum_editshow?id=${f.id }">修改</a>當發生點擊事件,向映射路徑為Curriculum_editshow的servlet發起了一個帶參請求。
int id = Integer.parseInt(request.getParameter("id"));fService.delete(id);request.getRequestDispatcher("/Curriculum_list").forward(request, response);刪除之后:
六.修改課程
修改課程作為一個獨立的頁面,使用一個form搜集需要改的目標值,然后指向路徑為Curriculum_edit的servlet執行修改操作:
<form class="form-horizontal" action="/MVC_war_exploded/Curriculum_edit" method="post"><input type="hidden" name="id" value="${f.id }"><div class="form-group"><div class="col-sm-6">課程名稱:<input type="text" class="form-control" id="input_curriculumName" name="curriculumName" value="${f.curriculumName }" required="required"><br/>課程價格:<input type="text" class="form-control" id="input_price" name="price" value="${f.price }" required="required"><br/>課程介紹:<input type="text" class="form-control" id="input_introduction" name="introduction" value="${f.introduction }" required="required"></div></div><div class="form-group"><div class="col-sm-offset-1 col-sm-10"><button type="submit" class="btn btn-success">提交修改</button></div></div></form>Curriculum_edit服務:
Curriculum t = new Curriculum();try {BeanUtils.copyProperties(t, request.getParameterMap());} catch (Exception e) {e.printStackTrace();}fService.update(t);//更新修改的內容request.getRequestDispatcher("/Curriculum_list").forward(request, response);七.查詢全部
前端JSP如下:
Servlet代碼如下:
List<Curriculum> list= fService.GetAllCurriculum();request.setAttribute("list", list);this.getServletContext().removeAttribute("Curriculum");this.getServletContext().setAttribute("Curriculum",list);request.getRequestDispatcher("/Curriculum_list.jsp").forward(request, response);實驗總結
對比(1)和(2)理解使用MVC模式的優勢:分工明確,便于維護,重用性高,多個視圖共享一個模型,有利于分工合作,可以加快開發進度。
MVC架構圖如下:
實驗過程中沒有遇到較大的問題,在使用Maven的時候遇到過包與sql版本不兼容的問題,通過更換本地包解決了此問題。
本次實驗讓我對MVC三層架構有了非常深刻的理解,對后面非原生的web開發過程中的推動作用很大。
總結
以上是生活随笔為你收集整理的JavaWeb之MVC开发模式之商品实例CURD详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 EA 交易可视向导创建 EA 交易
- 下一篇: Java学习 --- docker部署微