今天第一次接触这类项目,但切实的反应出很多问题,自身的逻辑思路不佳,基础网页的构建速度过慢等等..
先看一下大致题目
1、项目需求:
河北金力集团是我省机械加工的龙头企业,主要从事矿山机械制造及各种机械零部件加工。企业有3个厂区,主厂区位于省高新技术开发区,3个分厂分别在保定、邢台和唐山。为增加企业的核心竞争力和加强管理的科学程度,近期企业将在全集团实行ERP管理,建立网页版公文流转系统。具体部门:主厂区、一分厂、二分厂、三分厂、销售部门、财务部门、办公室;领导:三位副厂长(分别管理生产、销售、财务)、一位厂长。
公文流转的流程:
2. 板块功能需求
(1)、页面要求
① 能适应800*600或1024*768分辨率;
② 布局合理、结构清晰、页面完整;
③ 有效页面数在8页以上;
④ 分页与主页风格统一;
⑤ 首页(登录页):用户登录页(共有十位用户帐号,帐号、密码可预设)。不同用户登录后,进入的功能页不相同,要求密码在数据库中加密。
⑥ 部门(不含办公室)功能页:有公文拟制、签收公文、浏览公文(已签收的公文)三个模块
⑦ 办公室功能页:有修改公文、公文流转、删除公文、公文发送等功能。
⑧ 副厂长功能页:有审核公文(修改并签意见)、浏览已发所有公文、查询公文三个模块。
⑨ 厂长功能页:有审签公文(修改并签意见)、浏览已发所有公文、查询公文三个模块。
⑩ 系统管理功能页:有用户管理、角色管理、公文流转流程管理。
(2)、功能设计:
1) 选择日期段。
2) 通过“查询”功能,显示该时间段内已通过审签的正式公文。
3) 点击公文标题,将会显示出该公文的具体信息。
a) 角色配置管理
b) 用户管理:查看用户、新开用户、暂停用户、用户信息修改、删除用户
c) 单位管理员设置功能:每个单位的操作员实现修改密码、修改个人信息。
个人看到这个题目是很懵的状态,毕竟觉得资历尚浅,但相较于其他刻苦的同学,也感到十分惭愧。在一点一点的尝试一下,大致有了一定思路,但目前尚未完成。并没有着急处理复杂的工作流程,我先开始了基础的登录的界面,通过permission值(自己定义的)来确定登录身份(用户还是管理员),从而跳转到不同的操作页面,采用的是最基础的JDBC连接数据库,然后开始分析流程,这也是整个项目最难的地方,因为本人尚未实现各个流转的关系图,也没能完成各个页面,所以只能提供简单的登录代码,但个人认为,给定充分时间,可独立完成简单的公文流转页面。目前敲码仍不熟练,构建体系的思维还很弱,是导致完成时间长的主要原因,近期一定加强训练,争取早日3个半小时之内完成。
在本次3个小时中,完成了基础的登录界面,可实现权限管理,不同权限操作的不同状态。在实践中也出现了很多问题,调取参数的空指针问题,页面间跳转问题(有时有弹出框)。以下代码将弹出框部分删除了
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <table border="1px" cellpadding="10px" cellspacing="0px"style="width: 30%;margin:auto;background:rgb(195,195,195)" bordercolor="blue" > <h1 align="center" style="font-weight: blue;font-size:230%;">注册页面</h1> <form action="sev?method=getin" method="post"> <tr> <th>用户名</th> <td><input type="text" name="username"></td> </tr> <tr> <th>密码</th> <td><input type="text" name="password"></td> </tr> <tr> <th>身份为</th> <td>普通用户<input type="radio" name="permission" value="1"></td> <td>管理员<input type="radio" name="permission" value="0"></td> </tr> <tr> <th colspan="2"> <input type="submit" value="注册"> </th> </tr> </form> </table> </body> </html>
这个是注册
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <table border="1px" cellpadding="10px" cellspacing="0px"style="width: 30%;margin:auto;background:rgb(195,195,195)" bordercolor="blue" > <h1 align="center" style="font-weight: blue;font-size:230%;">登录页面</h1> <form action="sev?method=in" method="post"> <tr> <th>用户名</th> <td><input type="text" name="username"></td> </tr> <tr> <th>密码</th> <td><input type="text" name="password"></td> <a align="center" style="font-weight: blue;font-size:230%;"href="http://localhost:8080/turn/getkey.jsp">注册</a> <tr> <th colspan="2"> <input type="submit" value="登录"> </th> </tr> </tr> </form> </table> </body> </html>
这个是登录
package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import dbu.dbutil; import user.User; import dao.Dao; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/sev") public class sev extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public sev() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("utf-8"); String method=req.getParameter("method"); if("in".equals(method)) { in(req,resp); } if("getin".equals(method)) { getin(req,resp); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected static void in(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("utf-8"); String username=req.getParameter("username"); String password=req.getParameter("passerword"); Dao dao=new Dao(); User user3=new User(username,password); boolean f=dao.in(user3); if(f) { req.setAttribute("message", "登录成功!"); req.getRequestDispatcher("www.4399.com").forward(req,resp); } else { req.setAttribute("message", "注册失败!"); req.getRequestDispatcher("keyin.jsp").forward(req,resp); } } protected static void getin(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("utf-8"); String username=req.getParameter("username"); String password=req.getParameter("password"); String permission=req.getParameter("permission"); User user3=new User(username,password,permission); Dao DAO=new Dao(); boolean f=DAO.adding(user3); if(f) { req.setAttribute("message", "注册成功!"); req.getRequestDispatcher("keyin.jsp").forward(req,resp); } else { req.setAttribute("message", "注册失败!"); req.getRequestDispatcher("keyin.jsp").forward(req,resp); } } }
servlet
package dbu; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class dbutil { public static String db_url = "jdbc:mysql://localhost:3306/shuju"; public static String db_user = "root"; public static String db_pass = "root"; public static Connection getConn () { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(db_url, db_user, db_pass); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * ??????? * @param state * @param conn */ public static void close (Statement state, Connection conn) { if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close (ResultSet rs, Statement state, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args) throws SQLException { Connection conn = getConn(); PreparedStatement pstmt = null; ResultSet rs = null; String sql ="select * from userin"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if(rs.next()){ System.out.println("空"); }else{ System.out.println("非空"); } } }
dbu
package dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import dbu.dbutil; import user.User; public class Dao{ public boolean adding(User user3) { String sql = "insert into userin(username,password,permission)values(‘"+ user3.getUsername()+"‘,‘"+ user3.getPassword()+"‘,‘"+ user3.getPermission()+"‘)"; Connection conn = dbutil.getConn(); Statement state = null; boolean f = false; int a = 0; try { state = conn.createStatement(); a=state.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } finally { dbutil.close(state, conn); } if (a>0) { f = true; } return f; } public boolean in(User user3) { String sql="select *from userin"; Connection conn = dbutil.getConn(); Statement state = null; boolean f = false; int a = 0; try { ResultSet rs = state.executeQuery(sql); state = conn.createStatement(); a=state.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } finally { dbutil.close(state, conn); } return f; } }
dao
总的来说,本次实践暴露出很多问题,之前赖以复制的代码(dbu,servlet等),一旦自己手敲还是需要想想,没能做到熟练,这也是最大的问题,导致了时间久等,但亲身实践一次以后还是有了很大的收获,很多地方需要弥补,一定尽快改进。
原文:https://www.cnblogs.com/2506236179zhw/p/12012446.html