课设要求
课设要求是做一个实验室器材管理系统,具体功能可以参考我的功能模块图。
功能模块图
先说明一下,这个整体的系统应该还包括使用者(学生)子系统,不然实验管理员子系统就无法按时间检测出是谁使坏了设备(没有相应的对象)。但由于时间原因,就只能做到这样了。
系统GUI
1. 登录
2. 超级管理员
3. 实验室器材管理员
遇到的问题及解决
1. 点击不同左侧菜单按钮,达到跳转到不同界面而url不变
解决:使用<iframe>标签实现不同不同内部界面共享同一个外部框架(左侧菜单栏)。
2. bootstrap样式或其他css样式复制进项目但不显示(样式失效)
解决:请检查服务器(我的是Apache_Tomcat)webapps文件夹下的项目中,是否包含你所使用的样式。
3. sevlet重定向页面报错404
解决:检查自己servlet中重定向到的页面路径是否有错,我就是因为这个问题困扰了好久(包括样式丢失的问题——也极有可能是你引入样式的路径出了问题)。关于如何引入绝对路径和相对路径,可参考这篇文章《HTML之绝对路径与相对路径》。
4. JavaBean命名不规范导致找不到属性
解决:javabean中每个变量对应setXXX() 和 getXXX() 方法,在set 或 get 后的变量名首字母大写,其他不变,切记!
例如:private int cntNum; 则其对应的方法应该为 getCntNum() 和 setCntNum()。
5. 实现用户登陆后才能访问内部页面,否则跳转到注册的功能
解决:使用session来实现。
代码
仅给出UserServlet的代码以供参考吧。
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.UserInfo;
@WebServlet(name="userServlet", urlPatterns="/userServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private PreparedStatement ps;
private Connection ct;
private ResultSet rs;
private Statement st;
private String sql;
private String execNum = "0";
private String jumpPage = null;
private final static String url = "jdbc:sqlserver://localhost:1433;databaseName=EquipmentSystem";
private final static String user = "sa";
private final static String password = "sa";
private String prKey;
private List<UserInfo> userList;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected boolean connectDB(){
int flag = 1;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(Exception e) {
flag = 0;
e.printStackTrace();
}
try {
ct = DriverManager.getConnection(url, user, password);
st = ct.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
}catch(Exception e) {
flag = 0;
e.printStackTrace();
}
return flag == 1 ? true : false;
}
protected void closeDB(){
try {
ct.close();
st.close();
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void insertIntoDB(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
ps = ct.prepareStatement("insert into UserInfo values(?,?,?,?,?,?)");
ps.setString(1, request.getParameter("identify"));
ps.setString(2, request.getParameter("password"));
ps.setString(3, request.getParameter("name"));
ps.setString(4, request.getParameter("teacherid"));
ps.setString(5, request.getParameter("phonenumber"));
ps.setString(6, request.getParameter("userrole"));
execNum = Integer.toString(ps.executeUpdate());
//int t = st.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
request.setAttribute("javax.servlet.error.exception",e);
request.setAttribute("javax.servlet.error.request_uri",request.getRequestURI());
RequestDispatcher rd=request.getRequestDispatcher("CatchException");
rd.forward(request,response);
}
}
protected void deleteFromDB(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String t = (String)request.getParameter("primary_key");
if(t != null && !t.equals(""))
sql = sql + "'" + t + "'";
int re = st.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
request.setAttribute("javax.servlet.error.exception",e);
request.setAttribute("javax.servlet.error.request_uri",request.getRequestURI());
RequestDispatcher rd=request.getRequestDispatcher("CatchException");
rd.forward(request,response);
}
}
protected void selectFromDB(HttpServletRequest request, HttpServletResponse response, int flag)
throws ServletException, IOException, SQLException {
try {
String t = (String)request.getParameter("primary_key");
if(1==flag || (t != null && !t.equals("")))
sql = sql + "'" + t + "'";
rs = st.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs.last();
int totalCount=rs.getRow();
int totalPage=0;
if(totalCount==0){
totalPage=0;
}else{
totalPage=(int)Math.ceil((double) totalCount/3);
}
String pageCurll=request.getParameter("pageCur");
if(pageCurll==null){
pageCurll="1";
}
int pageCur=Integer.parseInt(pageCurll);
if((pageCur-1)*3>totalCount){
pageCur=pageCur-1;
}
int startIndex=(pageCur-1)*3;
int perPageSize=3;
if(flag==1){
rs.beforeFirst();
}
else{
ps=ct.prepareStatement("select top "+perPageSize+" * from UserInfo where user_id not in " +
"(select top "+startIndex+" user_id from UserInfo)");
rs=ps.executeQuery();
}
while(rs.next()){
execNum = "1";
UserInfo uinfo = new UserInfo();
uinfo.setPassword(rs.getString("password"));
uinfo.setPhoneNumber(rs.getString("phone_num"));
uinfo.setSno(rs.getString("sno"));
uinfo.setUserId(rs.getString("user_id"));
uinfo.setUserName(rs.getString("user_name"));
uinfo.setUserRole(rs.getString("user_role"));
userList.add(uinfo);
}
request.setAttribute("totalCount",totalCount);
request.setAttribute("totalPage",totalPage);
request.setAttribute("pageCur",pageCur);
}
protected void updateOnDB(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
ps = ct.prepareStatement(sql);
ps.setString(1, request.getParameter("password"));
ps.setString(2, request.getParameter("name"));
ps.setString(3, request.getParameter("teacherid"));
ps.setString(4, request.getParameter("phonenumber"));
ps.setString(5, request.getParameter("userrole"));
ps.setString(6, request.getParameter("identify"));
int t = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
request.setAttribute("javax.servlet.error.exception",e);
request.setAttribute("javax.servlet.error.request_uri",request.getRequestURI());
RequestDispatcher rd=request.getRequestDispatcher("CatchException");
rd.forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
connectDB();
String t1 = request.getParameter("sql[0]"), t2 = request.getParameter("sql[1]");
sql = (t1!=null) ? t1 : t2;
if(sql == null)
sql = "select * from UserInfo";
int flag = (t1!=null) ? 1 : 0;
userList = new ArrayList<UserInfo>();
//PrintWriter pw = response.getWriter();
String temp [] = sql.split(" ");
if(temp[0].equals("select")){
this.jumpPage = "/SuperAdmin/superAdminSelect.jsp";
try {
selectFromDB(request, response, flag);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if(temp[0].equals("insert")){
//pw.write("insert!");
this.jumpPage = "/SuperAdmin/superAdminInsert.jsp";
insertIntoDB(request, response);
}
else if(temp[0].equals("delete")){
this.jumpPage = "/SuperAdmin/superAdminSelect.jsp";
deleteFromDB(request, response);
}
else if(temp[0].equals("update")){
this.jumpPage = "/SuperAdmin/superAdminUpdate.jsp";
updateOnDB(request, response);
}
closeDB();
if(execNum!=null && !execNum.equals("0"))
request.setAttribute("execNum", execNum);
request.setAttribute("UserInfo", userList);
RequestDispatcher dis = request.getRequestDispatcher(jumpPage);
dis.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}