<%@ 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);
}
}