<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # **一、本節任務:使用MVC模式完成框架搭建** 在現有項目的src目錄下分別創建如下包。 包的命名規范為:com.姓名漢語拼音**加學號后三位**.功能模塊英文名稱 比如:com.baishenghua100.pojo **1.創建pojo包** **com.baishenghua100.pojo** **2.創建utils包** **com.baishenghua100.utils** **3.創建dao包** **com.baishenghua100.dao** **4.創建dao的實現包impl** **com.baishenghua100.dao.impl** **5.創建controller包** **com.baishenghua100.controller** **6.創建services包** **com.baishenghua100.services** **7.創建services包的實現包impl** **com.baishenghua100.services.impl** **8.創建測試包test** **com.baishenghua100.test** **9.創建過濾器包filter** **com.baishenghua100.filter** 然后分別在各個包下創建對應的類和接口 # **二、具體實現步驟:** **1.創建pojo包** **com.baishenghua100.pojo** >創建導航菜單類Menu100.java 三個屬性:菜單名稱、菜單地址和菜單序號。屬性名上也加上學號后三位 重寫hashCode()和equals()方法 重寫toString()方法 實現可序列化接口 創建有參和無參構造方法 ![](http://h.yiniuedu.com/c1ddc9a35b244ca11c17e53291013bc1) ``` package com.baishenghua100.pojo; import java.io.Serializable; /** * Menu100.java(導航菜單類) * @desc 導航菜單 * @author 柏圣華 * @date 2021-10-21 * */ public class Menu100 implements Serializable{ private static final long serialVersionUID = 1L; private int menuNo100;//導航菜單序號 private String menuName100;//導航菜單名稱 private String menuURL100;//導航菜單地址 public Menu100() { super(); } public Menu100(int menuNo100, String menuName100, String menuURL100) { super(); this.menuNo100 = menuNo100; this.menuName100 = menuName100; this.menuURL100 = menuURL100; } @Override public String toString() { return "Menu100 [menuNo100=" + menuNo100 + ", menuName100=" + menuName100 + ", menuURL100=" + menuURL100 + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((menuName100 == null) ? 0 : menuName100.hashCode()); result = prime * result + menuNo100; result = prime * result + ((menuURL100 == null) ? 0 : menuURL100.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Menu100 other = (Menu100) obj; if (menuName100 == null) { if (other.menuName100 != null) return false; } else if (!menuName100.equals(other.menuName100)) return false; if (menuNo100 != other.menuNo100) return false; if (menuURL100 == null) { if (other.menuURL100 != null) return false; } else if (!menuURL100.equals(other.menuURL100)) return false; return true; } public int getMenuNo100() { return menuNo100; } public void setMenuNo100(int menuNo100) { this.menuNo100 = menuNo100; } public String getMenuName100() { return menuName100; } public void setMenuName100(String menuName100) { this.menuName100 = menuName100; } public String getMenuURL100() { return menuURL100; } public void setMenuURL100(String menuURL100) { this.menuURL100 = menuURL100; } public static long getSerialversionuid() { return serialVersionUID; } } ``` **2.創建utils包** **com.baishenghua100.utils** >創建圖片驗證碼類,首先這個類是一個servlet。命名為:CheckCode100.java 參見圖片[驗證碼類](http://cms.yiniuedu.com/javawebstudy/2472193) ![](http://h.yiniuedu.com/30af3b8ad55aa9ed52cbe7361317e41a) **3.創建dao包** **com.baishenghua100.dao** >創建IMenuDao100接口,里面定義增刪改查和一些復雜查詢方法 查詢所有菜單 根據條件查詢部分菜單 查詢指定的某個菜單 更新菜單 添加菜單 刪除菜單 ![](http://h.yiniuedu.com/10fdc43cb49f62ae4259eab95cc6c686) ``` package com.baishenghua100.dao; import java.util.List; import com.baishenghua100.pojo.Menu100; /** * IMenuDao100.java(導航菜單數據處理接口) * @desc 主要定義一些方法:查詢所有導航菜單、條件查詢菜單、根據序號查詢導航菜單以及添加、修改和刪除菜單。 * @author 柏圣華 * @date 2021-10-21 * */ public interface IMenuDao100 { public List<Menu100> queryAll100();//查詢所有導航菜單 public List<Menu100> queryByCond100(String condition100);//條件查詢導航菜單 public Menu100 query100(Menu100 menu100);//根據序號查詢導航菜單 public Menu100 add100(Menu100 menu100);//添加導航菜單 public Menu100 update100(Menu100 menu100);//修改導航菜單 public Menu100 delete100(Menu100 menu100);//刪除導航菜單 } ``` **4.創建dao的實現包impl** **com.baishenghua100.dao.impl** >創建IMenuDao100接口的實現類MenuDaoImpl100類,并實現接口里面的所有方法 ![](http://h.yiniuedu.com/86e741a1a281164375e3a8e1d1cc799b) ``` package com.baishenghua100.dao.impl; import java.util.List; import com.baishenghua100.dao.IMenuDao100; import com.baishenghua100.pojo.Menu100; /** * MenuDaoImpl100.java(導航菜單數據處理具體實現類) * @desc 主要實現接口里面的增刪改查的方法,比如說,查詢所有導航菜單、條件查詢菜單以及添加、修改和刪除菜單。 * @author 柏圣華 * @date 2021-10-21 * */ public class MenuDaoImpl100 implements IMenuDao100 { @Override public List<Menu100> queryAll100() { // TODO Auto-generated method stub return null; } @Override public List<Menu100> queryByCond100(String condition100) { // TODO Auto-generated method stub return null; } @Override public Menu100 query100(Menu100 menu100) { // TODO Auto-generated method stub return null; } @Override public Menu100 add100(Menu100 menu100) { // TODO Auto-generated method stub return null; } @Override public Menu100 update100(Menu100 menu100) { // TODO Auto-generated method stub return null; } @Override public Menu100 delete100(Menu100 menu100) { // TODO Auto-generated method stub return null; } } ``` **5.創建controller包** **com.baishenghua100.controller** >創建MenuServlet100 ![](http://h.yiniuedu.com/deec7108152ac5a68a0a487716f7611f) ``` package com.baishenghua100.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * MenuServlet100.java(導航菜單控制器類) * @desc 主要控制導航菜單模型數據和視圖展示 * @author 柏圣華 * @date 2021-10-21 * */ @WebServlet("/MenuServlet100") public class MenuServlet100 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public MenuServlet100() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } ``` **6.創建services包** **com.baishenghua100.services** >創建IMenuService100接口 ![](http://h.yiniuedu.com/71b53fef868cc2cfafd0ddd836ab6a1c) ``` package com.baishenghua100.services; import java.util.List; import com.baishenghua100.pojo.Menu100; /** * IMenuService100.java(導航菜單數據處理服務接口) * @desc 主要定義一些方法,比如說,查詢所有導航菜單、條件查詢菜單以及添加、修改和刪除菜單。 * @author 柏圣華 * @date 2021-10-21 * */ public interface IMenuService100 { public List<Menu100> queryAll100();//查詢所有導航菜單 public List<Menu100> queryByCond100(String condition100);//條件查詢導航菜單 public Menu100 query100(Menu100 menu100);//根據序號查詢導航菜單 public Menu100 add100(Menu100 menu100);//添加導航菜單 public Menu100 update100(Menu100 menu100);//修改導航菜單 public Menu100 delete100(Menu100 menu100);//刪除導航菜單 } ``` **7.創建services包的實現包impl** **com.baishenghua100.services.impl** >創建MenuServiceImpl100實現IMenuService100接口 ![](http://h.yiniuedu.com/3d243a9c0e4799b66a3a5c54a6f25665) ``` package com.baishenghua100.services.impl; import java.util.List; import com.baishenghua100.pojo.Menu100; import com.baishenghua100.services.IMenuService100; /** * MenuServiceImpl100.java(導航菜單數據處理服務具體實現類) * @desc 主要調用IMenDao100接口里面的方法,具體調用IMenDao100接口實現類MenuDaoImpl100類里面的方法 * @author 柏圣華 * @date 2021-10-21 * */ public class MenuServiceImpl100 implements IMenuService100 { IMenuDao100 iMenuDao100 = new MenuDaoImpl100(); @Override public List<Menu100> queryAll100() { return iMenuDao100.queryAll100(); } @Override public List<Menu100> queryByCond100(String condition100) { return iMenuDao100.queryByCond100(condition100); } @Override public Menu100 query100(Menu100 menu100) { return iMenuDao100.query100(menu100); } @Override public Menu100 add100(Menu100 menu100) { return iMenuDao100.add100(menu100); } @Override public Menu100 update100(Menu100 menu100) { return iMenuDao100.update100(menu100); } @Override public Menu100 delete100(Menu100 menu100) { return iMenuDao100.delete100(menu100); } } ``` **8.創建測試包test** **com.baishenghua100.test** >創建MenuServiceImpl100的測試類MenuServiceImplTest100 創建一個JUnit Test case,名字為MenuServiceImplTest100 在class under test下選擇MenuServiceImpl100這個類,然后選擇要測試哪些方法 ![](http://h.yiniuedu.com/b57157abb0ccef41a80c9bfa572f0f75) ``` package com.baishenghua100.test; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; /** * MenuServiceImplTest100.java(導航菜單數據處理服務具體實現類的測試類) * @desc 主要測試實現類MenuServiceImpl100類里面的方法,有沒有實現 * @author 柏圣華 * @date 2021-10-21 * */ class MenuServiceImplTest100 { @BeforeEach void setUp() throws Exception { } @AfterEach void tearDown() throws Exception { } @Test void testQueryAll100() { fail("Not yet implemented"); } @Test void testQueryByCond100() { fail("Not yet implemented"); } @Test void testQuery100() { fail("Not yet implemented"); } @Test void testAdd100() { fail("Not yet implemented"); } @Test void testUpdate100() { fail("Not yet implemented"); } @Test void testDelete100() { fail("Not yet implemented"); } } ``` **9.創建過濾器包filter** **com.baishenghua100.filter** >創建字符編碼過濾器類CharacterEncodingFilter100類 注意此處要創建一個Filter ![](http://h.yiniuedu.com/8e8187875d2e80475373d6801fdaec90) ``` package com.baishenghua100.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * CharacterEncodingFilter100.java(字符編碼過濾器類) * @desc 主要統一字符編碼 * @author 柏圣華 * @date 2021-10-21 * */ @WebFilter(urlPatterns="/*",initParams= {@WebInitParam(name="CharsetEncoding",value="utf-8")}) public class CharacterEncodingFilter100 implements Filter { private static String encoding;//定義變量接收初始化的值 /** * Default constructor. */ public CharacterEncodingFilter100() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; //設置字符編碼鏈鎖 request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { //接收web.xml配置文件中或者注解中的初始參數 encoding = fConfig.getInitParameter("CharsetEncoding"); } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看