MVC实例!———欢迎提出意见
一个算是完整的MVC例子本人新手,第一次写技术博客,感觉还好,如果各位有什么建议,欢迎给我这个菜鸟一些建议哦。如果你觉得我写的有什么错误的话,也欢迎各位给我指出错误,帮助我这个程序菜鸟解决!
我所用的开发工具不用说,大部分程序员都熟悉的 MyEclipse 8.6
数据库:mysql mysql
数据库的设计:
项目名称: MVCTest
我所建立的包如下:
注意命名的规范哦!
1.dao接口类
2.factory工厂类
3.impl真实类
4.proxy代理类
5.数据库连接类
6.JUnit测试类
7.servlet
7.vo类
对了别忘了引入驱动包!
接下来解析一下代码:
1.创建vo类!
package org.yzsoft.mvctest.vo;
public class Tusers {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
private int id;
private String name;
private String username;
private String password;
private String type;
}
2.数据库连接类
package org.yzsoft.mvctest.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseConnection {
private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
private static final String DBURL = "jdbc:mysql://localhost:3306/news";
private static final String DBUSER = "root";
private static final String DBPASSWORD = "admin";
private Connection conn;
public DatabaseConnection() throws Exception {
Class.forName(DBDRIVER);
this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
}
public Connection getConnection() {
return this.conn;
}
public void close() throws Exception {
if (this.conn != null) {
try {
this.conn.close();
} catch (Exception e) {
throw e;
}
}
}
}
3.dao类
package org.yzsoft.mvctest.dao;
import java.util.List;
import org.yzsoft.mvctest.vo.Tusers;
public interface ITusersDAO {
public boolean doCreate(Tusers tusers) throws Exception;
public boolean doDelete(int id) throws Exception;
public boolean doUpdate(Tusers tusers) throws Exception;
public List<Tusers> findAll(String keyWord) throws Exception;
public Tusers findById(int id) throws Exception;
public boolean findLogin(Tusers tusers) throws Exception ;
}
4.真实类———注意哦!很容易出错的地方!
package org.yzsoft.mvctest.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.yzsoft.mvctest.dao.ITusersDAO;
import org.yzsoft.mvctest.vo.Tusers;
public class TusersDAOImpl implements ITusersDAO {
private Connection conn = null;
private PreparedStatement pstmt = null;
public TusersDAOImpl(Connection conn) {
this.conn = conn;
}
public boolean doCreate(Tusers tusers) throws Exception {
boolean flag = false;
String sql = "INSERT INTO tusers(name,username,password,type) VALUES(?,?,?,?)";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setString(1, tusers.getName());
this.pstmt.setString(2, tusers.getUsername());
this.pstmt.setString(3, tusers.getPassword());
this.pstmt.setString(4, tusers.getType());
if (this.pstmt.executeUpdate() > 0) {
flag = true;
}
this.pstmt.close();
return flag;
}
public boolean doDelete(int id) throws Exception {
boolean flag = false;
String sql = "DELETE FROM tusers WHERE id=?";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, id);
if (this.pstmt.executeUpdate() > 0) {
flag = true;
}
return flag;
}
public boolean doUpdate(Tusers tusers) throws Exception {
boolean flag = false;
String sql = "UPDATE tusers SET name=?,username=?,password=?,type=? WHERE id=?";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setString(1, tusers.getName());
this.pstmt.setString(2, tusers.getUsername());
this.pstmt.setString(3, tusers.getPassword());
this.pstmt.setString(4, tusers.getType());
this.pstmt.setInt(5, tusers.getId());
if (this.pstmt.executeUpdate() > 0) {
flag = true;
}
return flag;
}
public List<Tusers> findAll(String keyWord) throws Exception {
List<Tusers> all = new ArrayList<Tusers>();
String sql = "select * from tusers where id like ? or name like ? or username like ? or password like ? or type like ? ";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setString(1, "%" + keyWord + "%");
this.pstmt.setString(2, "%" + keyWord + "%");
this.pstmt.setString(3, "%" + keyWord + "%");
this.pstmt.setString(4, "%" + keyWord + "%");
this.pstmt.setString(5, "%" + keyWord + "%");
ResultSet rs = this.pstmt.executeQuery();
Tusers tusers = null;
while (rs.next()) {
tusers = new Tusers();
tusers.setId(rs.getInt(1));
tusers.setName(rs.getString(2));
tusers.setUsername(rs.getString(3));
tusers.setPassword(rs.getString(4));
tusers.setType(rs.getString(5));
all.add(tusers);
}
this.pstmt.close();
return all;
}
public Tusers findById(int id) throws Exception {
Tusers tusers = new Tusers();
String sql = "SELECT id,name,username,password,type FROM tusers WHERE id=?";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, id);
ResultSet rs = this.pstmt.executeQuery();
if (rs.next()) {
tusers = new Tusers();
tusers.setId(rs.getInt(1));
tusers.setName(rs.getString(2));
tusers.setUsername(rs.getString(3));
tusers.setPassword(rs.getString(3));
tusers.setType(rs.getString(3));
}
this.pstmt.close();
return tusers;
}
public boolean findLogin(Tusers tusers) throws Exception {
boolean flag = false ;
String sql = "SELECT * FROM tusers WHERE username=? AND password=?" ;
this.pstmt = this.conn.prepareStatement(sql) ;
this.pstmt.setString(1,tusers.getUsername()) ;
this.pstmt.setString(2,tusers.getPassword()) ;
ResultSet rs = this.pstmt.executeQuery() ;
if(rs.next()){
tusers.setUsername(rs.getString(1)) ; // 鍙栧嚭涓�釜鐢ㄦ埛鐨勭湡瀹炲鍚�
flag = true ;
}
this.pstmt.close() ;
return flag ;
}
}
5.代理类
package org.yzsoft.mvctest.proxy;
import java.util.List;
import org.yzsoft.mvctest.dao.ITusersDAO;
import org.yzsoft.mvctest.impl.TusersDAOImpl;
import org.yzsoft.mvctest.util.DatabaseConnection;
import org.yzsoft.mvctest.vo.Tusers;
public class TusersDAOProxy implements ITusersDAO {
private DatabaseConnection dbc = null;
private ITusersDAO dao = null;
public TusersDAOProxy(){
try{
this.dbc = new DatabaseConnection();
}catch(Exception e){
e.printStackTrace();
}
this.dao = new TusersDAOImpl(this.dbc.getConnection());
}
public boolean doCreate(Tusers tusers) throws Exception {
boolean flag = false;
try {
flag = this.dao.doCreate(tusers);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
public boolean doDelete(int id) throws Exception {
boolean flag = false;
try {
flag = this.dao.doDelete(id);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
public boolean doUpdate(Tusers tusers) throws Exception {
boolean flag = false;
try {
flag = this.dao.doUpdate(tusers);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
public List<Tusers> findAll(String keyWord) throws Exception {
List<Tusers> all = null;
try {
all = this.dao.findAll(keyWord);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return all;
}
public Tusers findById(int id) throws Exception {
Tusers tusers = new Tusers();
try {
tusers = this.dao.findById(id);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return tusers;
}
public boolean findLogin(Tusers tusers) throws Exception {
boolean flag = false ;
try{
flag = this.dao.findLogin(tusers) ;
}catch(Exception e){
throw e ;
}finally{
this.dbc.close() ;
}
return flag ;
}
}
6.工厂类
package org.yzsoft.mvctest.factory;
import org.yzsoft.mvctest.dao.ITusersDAO;
import org.yzsoft.mvctest.proxy.TusersDAOProxy;
public class DAOFactory {
public static ITusersDAO getITusersDAOInstance() throws Exception {
return new TusersDAOProxy();
}
}
7.最后写servlet
package org.yzsoft.mvctest.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.yzsoft.mvctest.factory.DAOFactory;
import org.yzsoft.mvctest.vo.Tusers;
public class TuserServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public TuserServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String doAction = request.getParameter("doAction");
System.out.println(doAction);
if (doAction.equals("insert")) {
insert(request, response);
} else if (doAction.equals("update")) {
update(request, response);
} else if (doAction.equals("delete")) {
delete(request, response);
} else if (doAction.equals("findall")) {
findall(request, response);
} else if (doAction.equals("findByid")) {
findByid(request, response);
} else if (doAction.equals("findLogin")) {
findLogin(request, response);
}
}
private void findLogin(HttpServletRequest request,
HttpServletResponse response) {
String path = "index.jsp";
String error = "login.jsp";
String username = request.getParameter("username");
String password = request.getParameter("password");
List<String> info = new ArrayList<String>(); // 鏀堕泦閿欒
if (info.size() == 0) {
Tusers tusers = new Tusers();
tusers.setUsername(username);
tusers.setPassword(password);
try {
if (DAOFactory.getITusersDAOInstance().findLogin(tusers)) {
request.getRequestDispatcher(path);
findall(request, response);
} else {
request.getRequestDispatcher(error).forward(request,
response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void findByid(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
try {
Tusers tusers = DAOFactory.getITusersDAOInstance().findById(id);
request.setAttribute("tusers", tusers);
request.getRequestDispatcher("up.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
private void findall(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("ddddd11111");
String keyWord = request.getParameter("kw");
if (keyWord == null || "".equals(keyWord)) {
keyWord = "";
}
try {
List<Tusers> all = DAOFactory.getITusersDAOInstance().findAll(
keyWord);
request.setAttribute("all", all);
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
private void delete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
try {
if (DAOFactory.getITusersDAOInstance().doDelete(id)) {
findall(request, response);
} else {
// erro(request, response, 3);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void update(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String username = request.getParameter("username");
String password = request.getParameter("password");
String type = request.getParameter("type");
Tusers tusers = new Tusers();
tusers.setId(id);
tusers.setName(name);
tusers.setUsername(username);
tusers.setPassword(password);
tusers.setType(type);
if (DAOFactory.getITusersDAOInstance().doUpdate(tusers)) {
findall(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void insert(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String name = request.getParameter("name");
String username = request.getParameter("username");
String password = request.getParameter("password");
String type = request.getParameter("type");
Tusers tusers = new Tusers();
tusers.setName(name);
tusers.setUsername(username);
tusers.setPassword(password);
tusers.setType(type);
if (DAOFactory.getITusersDAOInstance().doCreate(tusers)) {
System.out.println("OK");
findall(request, response);
} else {
System.out.println("error");
erro(request, response, 2);
}
} catch (Exception e) {
System.out.println("erro");
e.printStackTrace();
}
}
private void erro(HttpServletRequest request, HttpServletResponse response,
int erro) // 澶勭悊閿欒
throws ServletException, IOException {
int str = erro;
switch (str) {
case 1:
request.setAttribute("erro", "鐧婚檰澶辫触");
request.getRequestDispatcher("erro.jsp").forward(request, response);
break;
case 2:
request.setAttribute("erro", "鎻掑叆澶辫触");
request.getRequestDispatcher("erro.jsp").forward(request, response);
break;
case 3:
request.setAttribute("erro", "鍒犻櫎澶辫触");
request.getRequestDispatcher("erro.jsp").forward(request, response);
break;
}
request.getRequestDispatcher("erro.jsp").forward(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
然后就可以开始junit的测试了!
下面可以开始做页面了
首先我们先做登陆
login
登陆只需在action 里面跳转至servlet 的findlogin里面就可以了
然后我们就可以开始做首页了!
index
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="org.yzsoft.mvctest.vo.Tusers"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form name="form1" method="post" action="TuserServlet?doAction=findall">
<p>
<label>
<input type="text" name="kw" id="kw">
</label>
<label>
<input type="submit" value="查询">
</label>
</p>
<table width="992" height="108" border="1" cellpadding="0"
cellspacing="0">
<tr>
<td width="179">
id </td>
<td width="202">姓名</td>
<td width="201">用户名</td>
<td width="134">密码</td>
<td width="126">备注</td>
<td width="136">
<a href="create.jsp">添加 </a></td>
</tr>
<%
try {
List<Tusers> info = (List<Tusers>) request.getAttribute("all");
Iterator<Tusers> iter = info.iterator();
%>
<%
while (iter.hasNext()) {
Tusers tusers = iter.next();
%>
<tr>
<td><%=tusers.getId()%></td>
<td><%=tusers.getName()%></td>
<td><%=tusers.getUsername()%></td>
<td><%=tusers.getPassword()%></td>
<td><%=tusers.getType()%></td>
<td>
<a href="TuserServlet?doAction=findByid&&id=<%=tusers.getId()%>">修改</a>||
<a href="TuserServlet?doAction=delete&&id=<%=tusers.getId()%>">删除</a> </td>
</tr>
<%
}
%>
</table>
<%
} catch (Exception e) {
e.printStackTrace();
}
%>
</form>
</body>
</html>
END!
写完了!打酱油去了!