国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

J2EE自定義mvc【框架配置及功能】

這篇具有很好參考價值的文章主要介紹了J2EE自定義mvc【框架配置及功能】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、配置步驟

二、配置框架前三步

導入相應的jar

導入相應的Class

導入xml文件

三、優(yōu)化基本操作(增刪改)

1、基礎優(yōu)化

編寫實體類

編寫B(tài)ookDao類

優(yōu)化BookDao

JUnit測試

2、后臺優(yōu)化

3、前端優(yōu)化


一、配置步驟

  1. 將框架打成jar包,然后導入新工程,并且把框架的依賴jar包導入進去
  2. 將分頁標簽相關文件、及相關助手類導入
  3. 框架的配置文件添加、以及web.xml的配置-以后開源框架的使用從這一步開始
  4. 完成Book實體類及bookDao的編寫
  5. 完成通用的增刪改方法
  6. 完成BookAction
  7. 完成mvc.xml的配置
  8. 完成前臺代碼的編寫

二、配置框架前三步

導入相應的jar

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

導入之后我們選中所有的jar包===》右鍵===》Build Path===》Add to Build Path

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

導入相應的Class

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

導入xml文件

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<action path="/book" type="com.tgq.web.BookAction">
		<forward name="list" path="/bookList.jsp" redirect="false" />
		<forward name="toList" path="/book.action?methodName=list"
			redirect="true" />
		<forward name="toEdit" path="/bookEdit.jsp" redirect="false" />
	</action>

</config>

測試我們的數(shù)據庫能否連接

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

三、優(yōu)化基本操作(增刪改)

1、基礎優(yōu)化

編寫實體類

package com.tgq.entity;

/**
 * 實體類
 * 
 * @author tgq
 *
 */
public class Book {
	private int bid;
	private String bname;
	private float price;

	public int getBid() {
		return bid;
	}

	public void setBid(int bid) {
		this.bid = bid;
	}

	public String getBname() {
		return bname;
	}

	public void setBname(String bname) {
		this.bname = bname;
	}

	public float getPrice() {
		return price;
	}

	public void setPrice(float price) {
		this.price = price;
	}

	@Override
	public String toString() {
		return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";
	}

	public Book(int bid, String bname, float price) {
		super();
		this.bid = bid;
		this.bname = bname;
		this.price = price;
	}

	public Book() {
		// TODO Auto-generated constructor stub
	}
}

編寫B(tài)ookDao類

編寫增刪改查的方法

package com.tgq.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;

import com.tgq.entity.Book;
import com.tgq.util.BaseDao;
import com.tgq.util.DBAccess;
import com.tgq.util.PageBean;
import com.tgq.util.StringUtils;

public class BookDao extends BaseDao<Book> {

	public List<Book> list(Book book, PageBean pageBean) throws Exception {
		String sql = "select * from t_mvc_book where 1=1 ";
		String bname = book.getBname();
		int bid = book.getBid();
		// 判斷是否為空
		if (StringUtils.isNotBlank(bname)) {
			sql += " and bname like '%" + bname + "%'";
		}
		// 判斷前臺是否傳bid
		if (bid != 0) {
			sql += " and bid=" + bid;
		}

		return super.executeQuery(sql, Book.class, pageBean);
	}

	/**
	 * 增加Book的方法
	 * 
	 * @param book
	 *            實體類
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int addBook(Book book) throws Exception {
		String sql = "insert into t_mvc_book values(?,?,?)";
		Connection conn = DBAccess.getConnection();
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setObject(1, book.getBid());
		ps.setObject(2, book.getBname());
		ps.setObject(3, book.getPrice());

		return ps.executeUpdate();

	}

	/**
	 * 刪除Book的方法 ,根據id刪除
	 * 
	 * @param book
	 *            實體類
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int delBook(Book book) throws Exception {
		String sql = "delete from t_mvc_book where bid=?";
		Connection conn = DBAccess.getConnection();
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setObject(1, book.getBid());

		return ps.executeUpdate();

	}

	/**
	 * 修改Book的方法
	 * 
	 * @param book
	 *            實體類
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int updateBook(Book book) throws Exception {
		String sql = "update t_mvc_book set bname=?,price=? where bid=?";
		Connection conn = DBAccess.getConnection();
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setObject(1, book.getBname());
		ps.setObject(2, book.getPrice());
		ps.setObject(3, book.getBid());

		return ps.executeUpdate();

	}

}

1、在增刪改的方法里面我們這兩行代碼是一樣的、重復的

		Connection conn = DBAccess.getConnection();
		PreparedStatement ps = conn.prepareStatement(sql);

2、代碼邏輯是重復的===》sql占位符賦值

        ps.setObject(1, book.getBid());
		ps.setObject(2, book.getBname());
		ps.setObject(3, book.getPrice());

怎么解決?BaseDao
進行一個通用的增刪改的方法

/**
	 * 通用的增刪改方法
	 * 
	 * @param sql
	 *            數(shù)據庫sql語句
	 * @param t
	 *            對應表的實體類
	 * @param attrs
	 *            要修改的屬性值
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int executeUpdate(String sql, T t, String[] attrs) throws Exception {
		Connection conn = DBAccess.getConnection();
		PreparedStatement ps = conn.prepareStatement(sql);
		//利用fori 下標來進行?的賦值
		for (int i = 0; i < attrs.length; i++) {
			Field field = t.getClass().getDeclaredField(attrs[i]);
			// 打開權限
			field.setAccessible(true);
			
			ps.setObject(i + 1, field.get(t));

		}

		return ps.executeUpdate();
	}


?

優(yōu)化BookDao

我們在BaseDao類里面增加了一個通用的增刪改的方法,我們在BookDao里面利用起來

	/**
	 * 增加Book的方法
	 * 
	 * @param book
	 *            實體類
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int addBook(Book book) throws Exception {
		String sql = "insert into t_mvc_book values(?,?,?)";
		return super.executeUpdate(sql, book, new String[] { "bid", "bname", "price" });
	}

	/**
	 * 刪除Book的方法 ,根據id刪除
	 * 
	 * @param book
	 *            實體類
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int delBook(Book book) throws Exception {
		String sql = "delete from t_mvc_book where bid=?";
		return super.executeUpdate(sql, book, new String[] { "bid" });

	}

	/**
	 * 修改Book的方法
	 * 
	 * @param book
	 *            實體類
	 * @return
	 * @throws Exception
	 *             萬能異常
	 */
	public int updateBook(Book book) throws Exception {
		String sql = "update t_mvc_book set bname=?,price=? where bid=?";
		return super.executeUpdate(sql, book, new String[] { "bname", "price", "bid" });

	}

JUnit測試

?選中我們的類名===》ctrl+N===》JUnit Test Case===》選中頂部的New JUnit 4 test===》Next

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

勾選BookDao===》Finish?

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

BookDaoTest測試

package com.tgq.dao;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Test;

import com.tgq.entity.Book;
import com.tgq.util.PageBean;

public class BookDaoTest {

	private BookDao bookDao = new BookDao();

	@Test
	public void testList() throws Exception {
		Book book = new Book();
		book.setBname("52");
		PageBean pageBean = new PageBean();
		// pageBean.setPage(2);
		List<Book> list = bookDao.list(book, pageBean);
		for (Book b : list) {
			System.out.println(b);
		}

	}

	@Test
	public void testAddBook() throws Exception {
		Book book = new Book();
		book.setBid(52);
		book.setBname("5252");
		book.setPrice(12f);
		bookDao.addBook(book);
	}

	@Test
	public void testDelBook() throws Exception {
		Book book = new Book();
		book.setBid(52);
		bookDao.delBook(book);
	}

	@Test
	public void testUpdateBook() throws Exception {
		Book book = new Book();
		book.setBid(52);
		book.setBname("5252");
		book.setPrice(19f);
		bookDao.updateBook(book);
	}

}

測試結果:

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

2、后臺優(yōu)化

我們新建一個web包,在里面新建一個BookAction類(class),繼承ActionSupport,實現(xiàn)

ModelDriver接口,編寫

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

package com.tgq.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.tgq.dao.BookDao;
import com.tgq.entity.Book;
import com.tgq.util.PageBean;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;

public class BookAction extends ActionSupport implements ModelDriver<Book> {

	private Book book = new Book();
	private BookDao bookDao = new BookDao();

	// 查詢 bookList.jsp
	public String list(HttpServletRequest req, HttpServletResponse resp) throws Exception {

		PageBean pageBean = new PageBean();

		pageBean.setRequest(req);

		List<Book> list = bookDao.list(book, pageBean);
		req.setAttribute("list", list);
		req.setAttribute("pageBean", pageBean);
		return "list";
	}

	// 編輯界面跳轉 bookEdit.jsp
	public String toEdit(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		// 前提
		if (book.getBid() != 0) {
			List<Book> list = bookDao.list(book, null);// 不需要分頁
			req.setAttribute("b", list.get(0));
		}

		return "toEdit";
	}

	// 增加 重定向到book.action?methodName=list
	public String add(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		bookDao.addBook(book);
		return "toEdit";
	}

	// 刪除
	public String del(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		bookDao.delBook(book);
		return "toEdit";
	}

	// 修改
	public String update(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		bookDao.updateBook(book);
		return "toEdit";
	}

	@Override
	public Book getModel() {

		return book;
	}

}

我們編寫jsp界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.veryedu.cn" prefix="z"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link
	
	rel="stylesheet">
<script
	src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js"></script>
<title>書籍列表</title>
<style type="text/css">
.page-item input {
	padding: 0;
	width: 40px;
	height: 100%;
	text-align: center;
	margin: 0 6px;
}

.page-item input, .page-item b {
	line-height: 38px;
	float: left;
	font-weight: 400;
}

.page-item.go-input {
	margin: 0 10px;
}
</style>
</head>
<body>
	<form class="form-inline"
		action="${pageContext.request.contextPath }/book.action?methodName=list"
		method="post">
		<div class="form-group mb-2">
			<input type="text" class="form-control-plaintext" name="bname"
				placeholder="請輸入書籍名稱">
			<!-- 			<input name="rows" value="20" type="hidden"> -->
			<!-- 不想分頁 -->
			<input name="pagination" value="false" type="hidden">
		</div>
		<button type="submit" class="btn btn-primary mb-2">查詢</button>
		<a class="btn btn-primary mb-2"
			href="${pageContext.request.contextPath }/book.action?methodName=toEdit">新增</a>
	</form>

	<table class="table table-striped">
		<thead>
			<tr>
				<th scope="col">書籍ID</th>
				<th scope="col">書籍名</th>
				<th scope="col">價格</th>
				<th scope="col">操作</th>
			</tr>
		</thead>
		<tbody>
			<c:forEach var="b" items="${books }">
				<tr>
					<td>${b.bid }</td>
					<td>${b.bname }</td>
					<td>${b.price }</td>
					<td><a
						href="${pageContext.request.contextPath }/book.action?methodName=toEdit&bid=${b.bid}">修改</a>
						<a
						href="${pageContext.request.contextPath }/book.action?methodName=delete&bid=${b.bid}">刪除</a>
					</td>
				</tr>
			</c:forEach>
		</tbody>
	</table>
	<!-- 這一行代碼就相當于前面分頁需求前端的幾十行了 -->
	<z:page pageBean="${pageBean }"></z:page>

</body>
</html>

增加,修改的jsp界面。

判斷你點擊的是否是增加還是修改

action="${pageContext.request.contextPath }/book.action?methodName=${empty b ? 'add' : 'edit'}"
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.veryedu.cn" prefix="z"%>	
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>	
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link
	
	rel="stylesheet">
<script
	src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js"></script>
<title>書籍新增/修改</title>
</head>
<body>
	<form class="form-inline"
		action="${pageContext.request.contextPath }/book.action?methodName=${empty b ? 'add' : 'edit'}" method="post">
		書籍ID:<input type="text" name="bid" value="${b.bid }"><br>
		書籍名稱:<input type="text" name="bname" value="${b.bname }"><br>
		書籍價格:<input type="text" name="price" value="${b.price }"><br>
		<input type="submit">
	</form>


</body>
</html>

3、前端優(yōu)化

我們運行書籍列表

進行一個搜索,新增、修改、刪除

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

我們刪除ID:16、22

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

新增一個

ID:12
書籍名:圣墟12
價格:123?

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

修改ID:12
書籍名:圣墟1234
價格:12345

J2EE自定義mvc【框架配置及功能】,java-ee,mvc,java

希望對你們有用!!!文章來源地址http://www.zghlxwxcb.cn/news/detail-525832.html

到了這里,關于J2EE自定義mvc【框架配置及功能】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • J2EE&反射

    目錄 一.什么是反射 ? ? ? ?用實體類Student做示范 三.反射實例化 四.反射動態(tài)方法調用 五.反射讀寫屬性 反射java語言中的一種機制,通過這種機制可以動態(tài)的實例化對象,讀寫屬性,調用方法 二.類類 Class.forName(完整類名) 類名 .class 對象 .getClass ? ? ? ?用實體類Student做示范

    2024年02月16日
    瀏覽(24)
  • J2EE&XML建模

    目錄 用一個xml-config文件實例: 先看config.xml文件 再看?ActionModel ConfigModel ActionNotFoundException ForwardNotFoundException ConfigModelFactory ActionDuplicateDefinitionException ForwardDuplicateDefinitionException InvalidPathException 用一個xml-config文件實例: ?ActionModel ConfigModel ForwardModel? ? ? ActionNotFoundExcepti

    2024年02月16日
    瀏覽(29)
  • J2EE&通用分頁02

    J2EE&通用分頁02

    目錄 一.重構-提取公用方法???????? ? ?1.為了進行公共方法的抽取,需要找出上面實習中的可通用部分,和差異化部分 ? ? 2.公用方法封裝思路 ? ? ? 3.?具體實現(xiàn) 二.分頁標簽 2.1 準備一個Servlet ?3.2 結果展示頁面 三.?過濾器解決中文亂碼問題 四.加入分頁功能 四.封裝分

    2024年02月15日
    瀏覽(21)
  • J2EE項目部署與發(fā)布(Windows版本)

    J2EE項目部署與發(fā)布(Windows版本)

    目錄 一、會議OA單體項目Windows部署 1.1 數(shù)據測試 1.2 項目部署 1.3 報錯解決 1.4 最終效果 二、spa前后端分離項目Windows部署 2.1 后端代碼測試 2.2 前端代碼測試 2.3 項目部署 2.3.1 數(shù)據導入 2.3.2 后端部署 2.3.3 前端部署 2.3.3.1 Node.js環(huán)境配置 2.3.4 端口問題解決 2.3.4.1 method1 2.3.4.2 meth

    2024年02月07日
    瀏覽(47)
  • J2EE項目部署與發(fā)布(Linux版本)

    J2EE項目部署與發(fā)布(Linux版本)

    目錄 一.jdktomcat安裝 1.jdk的安裝 ?1.2解壓對應的安裝包 1.3配置環(huán)境變量? 2.tomcat的安裝? 二.mysql的安裝 三.后端接口部署 ?后端部署 導入war包 修改端口? 開啟訪問 1.jdk的安裝 登錄VMware Workstation Pro 然后連接MobaXterm? ? ? 將 jdk tomcat mysql 導入到MobaXterm? ?1.2解壓對應的安裝包 ?

    2024年02月06日
    瀏覽(16)
  • 虛擬機部署與發(fā)布J2EE項目(Linux版本)

    虛擬機部署與發(fā)布J2EE項目(Linux版本)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 艷艷耶??:個人主頁 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 個人專欄 :《Spring與Mybatis集成整合》《Vue.js使用》 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 越努力 ,越幸

    2024年02月06日
    瀏覽(21)
  • J2EE,Java EE,Jakarta EE 命名之間的恩恩怨怨

    J2EE,Java EE,Jakarta EE 命名之間的恩恩怨怨

    ? 簡單來說,上面所有的名字指的都是一個東西 Java Platform, Enterprise Edition 上面的幾個名詞都是下面的內容的簡寫: J2EE(Java 2 Platform, Enterprise Edition) Java EE (Java Platform, Enterprise Edition) Jakarta EE(Jakarta Enterprise Edition) 上面的排序是按照時間演進來進行排序。 ? 1998年12月,SUN公司發(fā)

    2023年04月26日
    瀏覽(24)
  • 14天學會:基于J2EE的JAVA WEB基礎

    14天學會:基于J2EE的JAVA WEB基礎

    手把手教你:基于Django的新聞文本分類可視化系統(tǒng)(文本分類由bert實現(xiàn)) 手把手教你:基于python的文本分類(sklearn-決策樹和隨機森林實現(xiàn)) 手把手教你:巖石樣本智能識別系統(tǒng) 本文通過一個14天的學習文檔教會大家學會 基于J2EE的JAVA WEB基礎 本次上傳的資源比較大,因此分

    2024年02月15日
    瀏覽(21)
  • 小研究 - J2EE 應用服務器的軟件老化測試研究

    小研究 - J2EE 應用服務器的軟件老化測試研究

    軟件老化現(xiàn)象是影響軟件可靠性的重要因素,長期運行的軟件系統(tǒng)存在軟件老化現(xiàn)象,這將影響整個業(yè)務系統(tǒng)的正常運行,給企事業(yè)單位帶來無可估量的經濟損失。軟件老化出現(xiàn)的主要原因是操作系統(tǒng)資源消耗殆盡,導致應用系統(tǒng)的性能下降甚至崩潰或宕機。文中監(jiān)測J2EE 應

    2024年02月11日
    瀏覽(23)
  • 【Linux】虛擬機部署與發(fā)布J2EE項目(Windows版本)

    【Linux】虛擬機部署與發(fā)布J2EE項目(Windows版本)

    跨平臺性:Java虛擬機(JVM)提供了一個中間層,使得Java應用程序可以在不同的操作系統(tǒng)上運行,無需進行代碼修改。這意味著您可以使用一套Java代碼,在不同的硬件和操作系統(tǒng)上部署和運行應用程序。 安全性:Java虛擬機提供了安全管理機制,可以對Java應用程序的執(zhí)行過程

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包