做一个建设工程管理系统
对于任何项目开发,CRUD(create,read,update,delete)是应用程序中最重要的操作和应用之一。 在Servlet中,我们可以轻松创建CRUD应用程序。
准备数据库(这里使用Sql Server)
创建表 ,插入数据
搭建框架
下载 sql server 驱动包
编写model层代码
package com.model;
public class t_project {
String project_id;
String project_name;
String deputy_name;
String telephone;
String addr;
public String getProject_id() {
return project_id;
}
public void setProject_id(String project_id) {
this.project_id = project_id;
}
public String getProject_name() {
return project_name;
}
public void setProject_name(String project_name) {
this.project_name = project_name;
}
public String getDeputy_name() {
return deputy_name;
}
public void setDeputy_name(String deputy_name) {
this.deputy_name = deputy_name;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public t_project(String project_id, String project_name,
String deputy_name, String telephone, String addr) {
super();
this.project_id = project_id;
this.project_name = project_name;
this.deputy_name = deputy_name;
this.telephone = telephone;
this.addr = addr;
}
public t_project() {
super();
}
}
编写dao层代码
因为有大量公共的代码所以抽取出去做一个父类
package com.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 封装数据库的操作
* 执行SQL语句,不返回数据:insert/update/
* 执行SQL语句,放回数据:select,返回ResultSet
*/
public class BaseDao {
String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://DESKTOP-6PS0PMV\\SQL2012:1433;databaseName=projectdb";
String user="sa";
String password="123";
/*
* insert/update/delete
*/
public void executeNoQuery(String sql){
try {
Class.forName(driver);//加载驱动
try {
Connection conn=DriverManager.getConnection(url, user, password);//创建连接
Statement stmt= conn.createStatement();//执行SQL语句
stmt.execute(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* select
*/
public ResultSet executeQuery(String sql){
ResultSet rs=null;
try {
Class.forName(driver);
try {
Connection conn=DriverManager.getConnection(url, user, password);
Statement stmt= conn.createStatement();
rs=stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
}
package com.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.model.t_project;
public class ProjectDao extends BaseDao{
//插入
public void Insert(t_project project){
String sql="insert into t_project(project_id, project_name, deputy_name, telephone, addr) values('"+
project.getProject_id() +"', '"+ project.getProject_name() +"', '"+ project.getDeputy_name() +"', '"+ project.getTelephone() +"', '"+ project.getAddr() +"')";
//调用 父类的方法
super.executeNoQuery(sql);
}
//修改
public void Update(t_project project){
String sql = "update t_project set project_name='"+ project.getProject_name() +"', deputy_name='"+ project.getDeputy_name() +"', telephone='"+ project.getTelephone() +"', addr='"+ project.getAddr() +"'";
sql += " where project_id = '"+ project.getProject_id() +"'";
super.executeNoQuery(sql);
}
//删除
public void Delete(String project_id){
String sql = "delete from t_project where project_id='"+ project_id +"'";
super.executeNoQuery(sql);
}
//查询所有,按条件查询
public List<t_project> select(){
List<t_project> projectList =new ArrayList<t_project>();
String sql="select * from t_project";
ResultSet rs =super.executeQuery(sql);
//将ResultSet转化为list集合
try {
while(rs.next()){
//读取数据
String project_id = rs.getString("project_id");
String project_name = rs.getString("project_name");
String deputy_name = rs.getString("deputy_name");
String telephone = rs.getString("telephone");
String addr = rs.getString("addr");
System.out.println( project_id );
//构建对象,用一条记录的数据
t_project project =new t_project(project_id, project_name, deputy_name, telephone, addr);
projectList.add(project);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return projectList;
}
//查询,按照主键ID
public t_project selectByID(String id){
t_project project =new t_project();
String sql = "select * from t_project where project_id='"+ id +"'";
ResultSet rs = super.executeQuery(sql);
try {
if(rs.next()){
//读取字段的数据
String project_id = rs.getString("project_id");
String project_name = rs.getString("project_name");
String deputy_name = rs.getString("deputy_name");
String telephone = rs.getString("telephone");
String addr = rs.getString("addr");
//设置对象属性
project.setProject_id(project_id);
project.setProject_name(project_name);
project.setDeputy_name(deputy_name);
project.setTelephone(telephone);
project.setAddr(addr);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return project;
}
}
测试一下
package com.dao;
import com.model.t_project;
public class test {
public static void main(String[] args) {
t_project project =new t_project("2020-11", "软件学院", "忘忧3", "520520520", "不详");
ProjectDao projectDao =new ProjectDao();
projectDao.Insert(project);
System.out.println("insert is ok!");
}
}
编写视图层
projectlist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
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 'projectlist.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>
<div style="float:left; width:100%;">
<!--头部-->
<div style="float:left; width:100%; background-color:#cccccc; height:120px;">
<div style="float:right; font-size:30px; color:#FFF; padding-top:40px; padding-right:30px;">
建设工程监管信息系统
</div>
<div style="float:left; padding-top:90px;">
<a href="#">系统管理</a>
<a href="#">业务处理</a>
<a href="#">交易流程</a>
<a href="#" style="margin-left:100px;">退出系统</a>
</div>
</div>
<!--内容-->
<div style="float:left; width:100%;">
<!--左边功能导航-->
<div style="float:left; width:20%; background-color:#eeeeee; min-height:600px; ">
<ul>
<li> <a href="#">施工报建申请</a> </li>
<li> <a href="#">入场交易登记</a> </li>
<li> <a href="#">项目招标登记</a> </li>
<li> <a href="#">发布招标公告</a> </li>
</ul>
</div>
<!--内容-->
<div style="float:left; width:80%;">
<div style="float:left; border-bottom:1px solid #cccc; width:100%;">
>>项目信息录入
<span style="margin-left:80px;">
您的位置:招投标流程->
</span>
</div>
<div style="float:right; margin-top:10px; margin-right:10px;">
<input type="button" value="新建工程" onclick="location.href='projectadd.jsp'" />
</div>
<div style="float:left; width:100%; margin-top:20px; ">
<table style="width:98%;" align="center">
<tr>
<td colspan="3" style="background-color:#666; color:#fff;">项目信息</td>
</tr>
<tr style="background-color:#ccc;">
<td>工程编号</td>
<td>工程名称</td>
<td>相关操作</td>
</tr>
<c:forEach items="${list}" var="project">
<tr>
<td> ${project.project_id } </td>
<td> ${project.project_name } </td>
<td>
<a href="ProjectServlet?action=listbyid&id=${project.project_id }">修改</a>
<a href="ProjectServlet?action=del&id=${project.project_id }">删除</a>
</td>
</tr>
</c:forEach>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
projectadd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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 'projectadd.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>
<div style="float:left; width:100%;">
<!--头部-->
<div style="float:left; width:100%; background-color:#cccccc; height:120px;">
<div style="float:right; font-size:30px; color:#FFF; padding-top:40px; padding-right:30px;">
建设工程监管信息系统
</div>
<div style="float:left; padding-top:90px;">
<a href="#">系统管理</a>
<a href="#">业务处理</a>
<a href="#">交易流程</a>
<a href="#" style="margin-left:100px;">退出系统</a>
</div>
</div>
<!--内容-->
<div style="float:left; width:100%;">
<!--左边功能导航-->
<div style="float:left; width:20%; background-color:#eeeeee; min-height:600px; ">
<ul>
<li> <a href="#">施工报建申请</a> </li>
<li> <a href="#">入场交易登记</a> </li>
<li> <a href="#">项目招标登记</a> </li>
<li> <a href="#">发布招标公告</a> </li>
</ul>
</div>
<!--内容-->
<div style="float:left; width:80%;">
<div style="float:left; border-bottom:1px solid #cccc; width:100%;">
>>项目信息录入
<span style="margin-left:80px;">
您的位置:招投标流程->
</span>
</div>
<div style="float:right; margin-top:10px; margin-right:10px;">
<input type="button" value="新建工程" />
</div>
<div style="float:left; width:100%; margin-top:20px; ">
<form method="post" action="ProjectServlet?action=add">
<table style="width:98%;" align="center">
<tr>
<td colspan="3" style="background-color:#666; color:#fff;">项目信息添加</td>
</tr>
<tr >
<td align="right">工程编号:</td>
<td> <input type="text" name="id" /> </td>
</tr>
<tr >
<td align="right">工程名称:</td>
<td> <input type="text" name="projectname" /> </td>
</tr>
<tr >
<td align="right">法人代表:</td>
<td> <input type="text" name="deputyname" /> </td>
</tr>
<tr >
<td align="right">建设单位电话:</td>
<td> <input type="text" name="phone" /> </td>
</tr>
<tr >
<td align="right">建设单位地址:</td>
<td> <input type="text" name="addr" /> </td>
</tr>
<tr>
<td></td>
<td> <input type="submit" value="确定" /> </td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
projectedit.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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 'projectedit.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>
<div style="float:left; width:100%;">
<!--头部-->
<div style="float:left; width:100%; background-color:#cccccc; height:120px;">
<div style="float:right; font-size:30px; color:#FFF; padding-top:40px; padding-right:30px;">
建设工程监管信息系统
</div>
<div style="float:left; padding-top:90px;">
<a href="#">系统管理</a>
<a href="#">业务处理</a>
<a href="#">交易流程</a>
<a href="#" style="margin-left:100px;">退出系统</a>
</div>
</div>
<!--内容-->
<div style="float:left; width:100%;">
<!--左边功能导航-->
<div style="float:left; width:20%; background-color:#eeeeee; min-height:600px; ">
<ul>
<li> <a href="#">施工报建申请</a> </li>
<li> <a href="#">入场交易登记</a> </li>
<li> <a href="#">项目招标登记</a> </li>
<li> <a href="#">发布招标公告</a> </li>
</ul>
</div>
<!--内容-->
<div style="float:left; width:80%;">
<div style="float:left; border-bottom:1px solid #cccc; width:100%;">
>>项目信息修改
<span style="margin-left:80px;">
您的位置:招投标流程->
</span>
</div>
<div style="float:right; margin-top:10px; margin-right:10px;">
<input type="button" value="返回" onclick="location.href='ProjectServlet?action=list'" />
</div>
<div style="float:left; width:100%; margin-top:20px; ">
<form method="post" action="ProjectServlet?action=edit">
<table style="width:98%;" align="center">
<tr>
<td colspan="3" style="background-color:#666; color:#fff;">项目信息修改</td>
</tr>
<tr >
<td align="right">工程编号:</td>
<td> <input type="text" value="${project.project_id }" name="project_id" readonly="readonly" /> </td>
</tr>
<tr >
<td align="right">工程名称:</td>
<td> <input type="text" value="${project.project_name }" name="project_name" /> </td>
</tr>
<tr >
<td align="right">法人代表:</td>
<td> <input type="text" value="${project.deputy_name }" name="deputy_name" /> </td>
</tr>
<tr >
<td align="right">建设单位电话:</td>
<td> <input type="text" value="${project.telephone }" name="telephone" /> </td>
</tr>
<tr >
<td align="right">建设单位地址:</td>
<td> <input type="text" value="${project.addr}" name="addr" /> </td>
</tr>
<tr>
<td></td>
<td> <input type="submit" value="确定" /> </td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
编写controller层
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.ProjectDao;
import com.model.t_project;
public class ProjectServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//页面的编码设置
request.setCharacterEncoding("utf-8");
//客服端传一个action,表示具体的动作(操作)
String action=request.getParameter("action");
ProjectDao projectDao =new ProjectDao();
if(action.equals("add")){
//执行操作
String id = request.getParameter("id");
String projectname = request.getParameter("projectname");
String deputyname= request.getParameter("deputyname");
String phone = request.getParameter("phone");
String addr = request.getParameter("addr");
//生成实体对象
t_project project = new t_project(id, projectname, deputyname, phone, addr);
//调用dao中的方法
projectDao.Insert(project);
//转向到列表
response.sendRedirect("ProjectServlet?action=list");
}else if(action.equals("edit")){
//执行修改
//获取表单信息
String project_id = request.getParameter("project_id");
String project_name = request.getParameter("project_name");
String deputy_name = request.getParameter("deputy_name");
String telephone = request.getParameter("telephone");
String addr = request.getParameter("addr");
//构建project对象,调用修改的方法
t_project project = new t_project(project_id, project_name, deputy_name, telephone, addr);
projectDao.Update(project);
//转向到列表
response.sendRedirect("ProjectServlet?action=list");
}else if(action.equals("del")){
//执行删除
//得到工程号
String id =request.getParameter("id");
projectDao.Delete(id);
//重转向到 Serlvet显示
response.sendRedirect("ProjectServlet?action=list");
}else if(action.equals("list")){
//执行查询
List<t_project> projectlist =projectDao.select();
//将数据加到request请求,页面转发
request.setAttribute("list", projectlist);
request.getRequestDispatcher("projectlist.jsp").forward(request, response);
}else if(action.equals("listbyid")){
//执行关键字的查询
//得到id
String id =request.getParameter("id");
t_project project = projectDao.selectByID(id);
//将查询得到的对象,转向到 修改页面
request.setAttribute("project", project);
request.getRequestDispatcher("projectedit.jsp").forward(request, response);
}else{
//执行查询
}
}
}
项目演示
项目列表