9.2 在MVC模式中应用JDBC

	<%@ page contentType="text/html;charset=GB2312" %>
	<HTML>
	<BODY bgcolor=pink ><Font size=5>
	<FORM action="LogServlet" Method="post">
	<BR>输入帐号:
	<BR><Input type=text name="account">
	<BR>输入密码:
	<BR><Input type=password name="secret">
	<BR><Input type=submit name="g" value="提交">
	</FORM>
	<% if(request.getAttribute("log")!=null){
		String str=(String)request.getAttribute("log");
		if(str.equals("error"))
			out.println("<br>用户名或者密码错误");
  	  %>
	</FONT> 
	</BODY>
	</HTML>
	main.jsp
	<%@ page contentType="text/html;charset=GB2312" %>
	<HTML>
	<BODY BGcolor=yellow>
	<CENTER>
	<FONT SIZE=5>
	<P>欢迎进入网上书店
	</FONT>
	</CENTER>
	</BODY>
	</HTML>
  package model;
	import DAO.DBOperation;
	public class Login {
		private String name;
		private String password;
		public Login(){}
		public void setName(String name){this.name=name;}
		public void setPassword(String pass)
			{this.password=password;}
		public boolean login(String sql){
			DBOperation db=new DBOperation ();
			if(db.queryReturnboolean(sql))return true;
			return false;
			}
		}
	3、C层设计,也就是servlet的设计,主要是从V层获取提交信息,并作必要的处理(中文处理),调用业务层方法,根据结果进行页面转向,并把数据利用request内置对象传递到目的页面。以下为参考代码。
	LogServlet.java
	package servlet;
	import java.io.IOException;
	import java.io.PrintWriter;
	import javax.servlet.RequestDispatcher;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	import javax.servlet.http.HttpSession;
	import model.Login;
	public class LogServlet extends HttpServlet {
	public LogServlet() { super();}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		String account=request.getParameter("account");
		if(account==null){account="";}
		byte b[]=account.getBytes("ISO-8859-1");//中文处理。
		account=new String(b);
		//获取提交的密码:
		String secret=request.getParameter("secret");
		if(secret==null) secret="";
		byte c[]=secret.getBytes("ISO-8859-1");
		secret=new String(c);
		Login log=new Login();
		log.setName(account);
		log.setPassword(secret);
		HttpSession session=request.getSession();
		session.setAttribute("login", log);
		String sql="SELECT * FROM usertable WHERE name = "+"'"+account+"'"+
			" and pwd=  "+"'"+secret+"'";
		RequestDispatcher dispatcher = null;
		if(log.login(sql)){//登录成功
			request.setAttribute("log", "success");
	    	dispatcher=getServletContext().getRequestDispatcher("/main.jsp"); 
			}
		else {//登录失败
			 request.setAttribute("log", "error");
			dispatcher=getServletContext().getRequestDispatcher("/login.jsp");
			}
		dispatcher.forward(request, response);
		}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		doGet(request,response);
		}
	}
 

book.jsp
	<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
	<html>
		<head>
			<title>网上书店</title>
		</head>
	<body>
	<jsp:include flush="true" page="/BookTypeDisplay" />
    <jsp:include flush="true" page="/BookDisplay" />
    <p align="center">网上书店</p>
    <table width="15%" border="1" align="left">
    <%
    ArrayList<ArrayList<String>> 	bookTypes=(ArrayList<ArrayList<String>>)request.getAttribute("boo	kType");
    System.out.println(bookTypes.size());
    for(int i=0;i<bookTypes.size();i++){
    %>
      <tr>
        <td height="40" align="center" valign="middle">
        <span class="STYLE3">
        <%=bookTypes.get(i).get(0)%>
        </span></td>
      </tr>
      <%} %>
    </table>
    <table width="32%" border="1" align="right">
      <tr>
        <td width="25%" height="30" align="center" valign="middle">书名	</td>
        <td width="25%" align="center" valign="middle">作者</td>
        <td width="25%" align="center" valign="middle">出版社</td>
        <td width="25%" align="center" valign="middle">价格</td>
      </tr>
      <%ArrayList<ArrayList<String>> 	books=(ArrayList<ArrayList<String>>)request.getAttribute("books");
      if(books!=null) 
      for(int i=0;i<books.size();i++){
      %>
      <tr>
        <td height="25" align="center" 	valign="middle"><%=books.get(i).get(0) %></td>
        <td align="center" valign="middle"><%=books.get(i).get(1) %></td>
        <td align="center" valign="middle"><%=books.get(i).get(2) %></td>
        <td align="center" valign="middle"><%=books.get(i).get(3) %></td>
      </tr>
      <%} %>
    </table>
 	</body>
	</html>
	2、servlet设计
 

BookTypeDisplay.java
	import java.io.IOException;
	import java.util.ArrayList;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	public class BookTypeDisplay extends HttpServlet {
		private static final long serialVersionUID = 1L;
		public BookTypeController(){
    		super();
    		}
		Protected void doGet(HttpServletRequestrequest, HttpServletResponse response) 			throws ServletException, IOException {
			String sql="select typename from booktype";
			DBOperation dao=new DBOperation();
			ArrayList al=dao.queryReturnList(sql);
			request.setAttribute("bookType", al);
			}
		protected void doPost(HttpServletRequest request, HttpServletResponse response) 			throws ServletException, IOException {
			doGet(request, response);
			}
		public void init() throws ServletException {
		}
	}
	BookDisplay.java
	import java.io.IOException;
	import java.util.ArrayList;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	public class BookDisplay extends HttpServlet {
		private static final long serialVersionUID = 1L;
    	public BookController() {
        	super();
    		}
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws 	ServletException, 	IOException {
		String sql="select name,auther,publishing,price from book";
		DBOperation dao=new DBOperation();
		ArrayList al=dao.queryReturnList(sql);
		request.setAttribute("books", al);
		}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws 	ServletException, 	IOException {
		doGet(request,response);
		}
	}
 

 

register.jsp
	<%@ page contentType="text/html;charset=GB2312" %>
	<HTML>
	<BODY ><Font size=5>
	<Font size=5>
	<P>输入您的信息,带*号项必须填写:
	<FORM action="ServletRegister" Method="post">
	<BR>登录名称<Input type=text name="logname">*
	<BR>设置密码<Input type=password name="password">*
	<BR>姓别<Input type=text name="sex">*
	<BR>年龄<Input type=text name="age">*
	<BR>地址<Input type=text name="address">
	<BR>Email<Input type=text name="email">
	<BR><Input type=submit name="g" value="提交">
	</Form>
	<% String regmess=(String)request.getAttribute("reg");
		if(regmess!=null)out.println(regmess);
	%> 
	</BODY>
	</HTML>
 

package servlet;

	import java.io.IOException;
	import java.util.ArrayList;
	import javax.servlet.RequestDispatcher;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	import DAO.DBOperation;

	public class ServletRegister extends HttpServlet {
		public ServletRegister() {super();}
		public String getstring(String str){
	       try{byte b[]=str.getBytes("ISO-8859-1");
	       str=new String(b);
	       return str;
	       }
	      catch(Exception e){return str;}
	     }
		public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			String name=request.getParameter("logname");
			name=this.getstring(name);
			String pwd=request.getParameter("password");
			pwd=this.getstring(pwd);
			String sex=request.getParameter("sex");
			sex=this.getstring(sex);
			String ageString=request.getParameter("age");
			Integer age=new Integer(ageString);
			String address=request.getParameter("address");
			address=this.getstring(address);
			String email=request.getParameter("email");
			ArrayList param=new ArrayList();
			param.add(name);param.add(pwd);
			param.add(sex);param.add(age);
			param.add(address);param.add(email);
			String sql="INSERT INTO 
			usertable(name,pwd,sex,age,address,email) VALUES(?,?,?,?,?,?)";
			DBOperation db=new DBOperation();
			if(db.insertDeleteUpdate(sql, param))
				request.setAttribute("reg", "注册成功");
			else
				request.setAttribute("reg", "用户名重复或其它错误");
			RequestDispatcher dispatcher = null;
	   		dispatcher=getServletContext().getRequestDispatcher("/register.jsp");
	   		dispatcher.forward(request, response);
		}
		public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request,response);
		}
	}
 

insertDeleteUpdate方法重新设计后的参考代码。
	public void DataChange(ArrayList param, PreparedStatement pst)
	throws SQLException{	
		for(int i=0,j=1; i<param.size();i++,j++){												if(param.get(i).getClass().getName().equals(
			"java.lang.Integer")){
				Integer temp=(Integer)(param.get(i));
				pst.setInt(j, temp.intValue());//如果是整型。
			}
			else if(param.get(i).getClass().getName().equals(
			"java.lang.Long")){
				Long temp=(Long)(param.get(i));
				pst.setLong(j,temp.longValue());//如果是长整型
			}
			else if(param.get(i).getClass().getName().equals(
			"java.lang.Float")){
				Float temp=(Float)(param.get(i));
				pst.setFloat(j, temp.floatValue());//如果是浮点型
			}
			else if(param. get(i).getClass().getName().equals(
			"java.lang.Double")){
				Double temp=(Double)(param.get(i));
				pst.setDouble(j, temp.doubleValue());//如果是double型
			}
			else if(param.get(i).getClass().getName().equals(
			"java.lang.String"))
				pst.setString(j, (String)(param.get(i)));//如果是字符串
				else {System.out.println("error");}//其它暂不考虑。
			}
		}
	public boolean insertDeleteUpdate(String sql , ArrayList param) {
		boolean flag = true;
		conn = DBConnection.getConn();
		if(conn==null)return false;
		try {
			pst=conn.prepareStatement(sql);
			DataChange(param,pst);//给“?”位置赋值。
			pst.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			flag = false;
		} finally {
			DBConnection.close( conn,rs);
		}
		return flag;
	}
 

 

public boolean UpdateByBatch(String sql ,ArrayList param){
		boolean flag=false;
		try {   
            conn = DBConnection.getConn(); 
            pst=conn.prepareStatement(sql);
            conn.setAutoCommit(false); 
            // 若不出现异常,则继续执行到try语句完,否则跳转到catch语句中。
            for(int i=0;i<param.size();i++){
				DataChange((ArrayList)param.get(i),pst);
				pst.addBatch(); 
            }
            pst.executeBatch();   
            // commit:若成功执行完所有的插入操作,则正常结束。
            conn.commit();    
            flag=true;
		}catch (SQLException e) {   
            e.printStackTrace();
          //若出现异常,对数据库中所有已完成的操作全部撤销。
            try {conn.rollback();} 
            catch (Exception e1) {   
                e1.printStackTrace();   
            	} 
			}		
         finally {
        	 try{conn.setAutoCommit(true);}
        	 catch(Exception e){}
        	 DBConnection.close(conn,pst, rs);
            } 
		return flag;
	}
 

 

<%@ page contentType="text/html;charset=GB2312" %>
	<html>
  	<body>
	<div align="center">
	<form action="AddBookByBatch" method="post" >
	<table border=1>
		<tr>
			<td  bgcolor="#66CCFF" >图书ID*</td>
			<td  bgcolor="#66CCFF" >图书名称*</td>
			<td  bgcolor="#66CCFF" >作 者*</td>
			<td  bgcolor="#66CCFF" >出 版 社*</td>
			<td  bgcolor="#66CCFF" >单 价*</td>
			<td  bgcolor="#66CCFF" >库 存 量*</td>
			<td  bgcolor="#66CCFF" >内容概要</td>
			<td  bgcolor="#66CCFF" >图书类别*</td>
			<td  bgcolor="#66CCFF" >ISBN*</td>
		</tr>
		<% for(int i=0;i<5;i++){%>
		<tr>
		<td><input type="text" name="ID" size="10"></td>
		<td><input type="text" name="name" size="20"></td>
		<td><input type="text" name="author" size="10"></td>
		<td><input type="text" name="pub" size="20"></td>
		<td><input type="text" name="price" size="10"></td>
		<td><input type="text" name="storage" size="10"></td>
		<td><input type="text" name="brief" size="20"></td>
		<td><input type="text" name="type" size="10"></td>
		<td><input type="text" name="ISBN" size="10"></td>
		</tr>
		<%} %>
		</table>
		<BR><Input type=submit  value="提交">
	</form>
	 <% String regmess=(String)request.getAttribute("addbybatch");
   	if(regmess!=null)out.println(regmess);
   	%>
  	</div>
 	</body>
</html>
 

AddBookByBatch.java
	package servlet;
	import java.io.IOException;
	import java.io.PrintWriter;
	import java.util.ArrayList;
	import javax.servlet.RequestDispatcher;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	import DAO.DBOperation;
	public class AddBookByBatch extends HttpServlet {
		public AddBookByBatch() {super();}
		public String getstring(String str){
			try{byte b[]=str.getBytes("ISO-8859-1");
				str=new String(b);
				return str;
			}catch(Exception e){return str;}
		}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String id[]=request.getParameterValues("ID");
		String name[]=request.getParameterValues("name");
		String auther[]=request.getParameterValues("author");
		String publish[]=request.getParameterValues("pub");
		String price[]=request.getParameterValues("price");
		String storage[]=request.getParameterValues("storage");
		String brief[]=request.getParameterValues("brief");
		String type[]=request.getParameterValues("type");
		String isbn[]=request.getParameterValues("ISBN");
		System.out.println("hello");
		ArrayList param=new ArrayList();
		for(int i=0;i<id.length;i++){
			ArrayList row=new ArrayList();
			row.add(new Integer(id[i]));
			row.add(getstring(name[i]));
			row.add(getstring(auther[i]));
			row.add(getstring(publish[i]));
			row.add(getstring(price[i]));
			row.add(new Integer(storage[i]));
			row.add(getstring(brief[i]));
			row.add(new Integer(type[i]));
			row.add(getstring(isbn[i]));
			param.add(row);
		}
		System.out.println("hello1");
		String sql="INSERT INTO book(id,name,auther,publishing," +
				"price,storage,brief,type,isbn) " +
				"VALUES(?,?,?,?,?,?,?,?,?)";
		DBOperation db=new DBOperation();
		if(db.UpdateByBatch(sql, param))
			request.setAttribute("addbybatch", "提交成功");
		else
			request.setAttribute("addbybatch", "提交失败");
		System.out.println("hello2");
		RequestDispatcher dispatcher = null;
	   	dispatcher=getServletContext().getRequestDispatcher(
		"/addBookByBatch.jsp");
	   	dispatcher.forward(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		doGet(request,response);
		}
	}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值