MVC模式(model2模式)实例--向数据库添加书目信息

MVC模式包括model层  controller控制层 和view层 。在此分别用到的是model层(包括domain和DAO)  controller控制层(这里用的是servlet) 和view层(JSP)。

index.JSP页面如下:

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>录入商品信息</title>
		<style type="text/css">
			*{font-size: 12px;}
		</style>
		<script type="text/javascript">
			function save(form){
				if(form.name.value == ""){
					alert("请输入图书名称!");
					return false;
				}
				if(form.price.value == ""){
					alert("请输入图书价格!");
					return false;
				}
				if(form.author.value == ""){
					alert("请输入作者!");
					return false;
				}
			}
		</script>
	</head>
	<body>
		<form action="BookServlet" method="post" οnsubmit="return save(this);">
			<table border="1" align="center" width="300">
				<tr>
					<td align="center" colspan="2">
						<br><h1>录入图书信息</h1>
					</td>
				</tr>
				<tr>
					<td align="right">名称:</td>
					<td><input type="text" name="name"></td>
				</tr>
				<tr>
					<td align="right">价 格:</td>
					<td><input type="text" name="price"></td>
				</tr>
				<tr>
					<td align="right">作 者:</td>
					<td><textarea name="author" cols="30" rows="3"></textarea></td>
				</tr>
				<tr>
					<td align="center" colspan="2">
						<input type="submit" value="提 交">
						<input type="reset" value="重 置">
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>

<script>里面添加了一些表单控制信息   下方这些HTML语句实现了外表 就是页面显示 。

通过下面这句话

<form action="BookServlet" method="post" οnsubmit="return save(this);">
可知 表单的提交地址是 BookServlet ,其请求方法是post 。也就是说映射到BookServlet类的post方法进行处理。

模型层是这样的

首先是domain 实体类  很简单 只需要声明数据库对应表的每一个属性,并且写上get 和set方法就行了(可以自动生成getset方法的,就是在编写的空白处右键选择 source--获得getset方法 然后选择要生成方法的属性就可以了)

这里是添加书目信息,所以我们的实体类是Book.java



public class Book {
	private int id;
	private String name;
	private double price;
	private String author;//这里是domain层 在这里声明的对象是和数据库中的表对应的
	public int getId() {
		return id;//可以通过右击 source选择生成getter and setter方法。
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
}
然后再对应数据库操作的DAO类

bookDAO.java


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class BookDao {
	
	public void saveBook(Book book){
		try {
			// 加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 数据库连接URL
			String url = "jdbc:mysql://localhost:3306/db_database05";
			// 获取数据库连接
			Connection conn = DriverManager.getConnection(url, "这里是数据库用户名", "这里输入数据库密码");
			// 这里是要执行的sql语句  插入书目信息的SQL语句 (这里使用?占位符)
			String sql = "insert into tb_book(name,price,author) values(?,?,?)";
			// 创建PreparedStatement对象
			PreparedStatement ps = conn.prepareStatement(sql);
			// 这里是对sql语句中的参数动态赋值ֵ
			ps.setString(1, book.getName());
			ps.setDouble(2, book.getPrice());
			ps.setString(3, book.getAuthor());
			//执行更新操作
			ps.executeUpdate();		
			ps.close();		// 关闭ps
			conn.close();	// 关闭conn
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
最后就是起到关键作用 像是一个中介 一个桥梁作用的控制层---servlet了。

BookServlet.java

package com.lyq.controller;

import java.io.IOException;
import java.io.PrintWriter;

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

import com.lyq.model.Book;
import com.lyq.model.BookDao;

public class BookServlet extends HttpServlet {

	private static final long serialVersionUID = 5280925165959130198L;
	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//设置response的编码
		response.setContentType("text/html");
		response.setCharacterEncoding("GBK");
		// request的编码设置
		request.setCharacterEncoding("GBK");
		// 获取PrintWriter对象
		PrintWriter out = response.getWriter();
		// 获取表单post过来的值
		String name = request.getParameter("name");
		String price = request.getParameter("price");
		String author = request.getParameter("author");
		Book book = new Book();
		// 创建book对象 并把得到的属性值 赋给book对象ֵ
		book.setName(name);
		book.setPrice(Double.valueOf(price));
		book.setAuthor(author);
		// 实例化BookDao
		BookDao bookDao = new BookDao();
		//用savebook方法将属性值们传入数据库
		bookDao.saveBook(book);
		out.print("书目保存成功!");
		out.flush();
		out.close();
	}
}


此外还需要建立对应的数据库 这里用到的是mysql。

可以多多看看servlet里面的代码 会更加理解这个过程  当用户向表单中输入书目信息后,该信息在servlet中 先通过post方法得到,再把这些信息通过实例化一个book对象传给这个book对象,然后再实例化bookdao对象,把信息传给 bookdao对象的savebook方法,这个方法便实现了向数据库的表中插入信息的操作。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值