基於Java Web的圖書管理系統的設計與實現


本次javaweb實習基於目前流行的企業級框架Spring 、Spring MVC、MyBatis(SSM)和前端技術JQuery的圖書管理系統,主要功能包括:圖書查詢、圖書管理、圖書編輯、讀者管理、圖書的借閱與歸還以及借還日志記錄等。

1.技術簡介

1.1 Mysql數據庫:

Mysql是一種開放源代碼的關系型數據庫管理系統(RDBMS),使用最常用的數據庫管理語言--結構化查詢語言(SQL)進行數據庫管理。

1.2 Javaweb:

Java Web,是用Java技術來解決相關web互聯網領域的技術棧。web包括:web服務端和web客戶端兩部分。Java在客戶端的應用有Java Applet,不過使用得很少,Java在服務器端的應用非常的豐富,比如Servlet,JSP、第三方框架等等。Java技術對Web領域的發展注入了強大的動力。

1.3 SSM

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。常作為數據源較簡單的web項目的框架。

2.Myweb項目部分功能實現

2.1 連接數據庫:

try {
			//1.加載驅動
			Class.forName(driver);
			//2.獲得數據庫連接
			this.conn = DriverManager.getConnection(url, userno, password);
			return conn;
		} catch (Exception e) {
			// 將異常信息寫入到指定文件中(日志文件)
			e.printStackTrace();
		}
		return null; 

2.2 查詢用戶列表

代碼:

//執行sql查詢
		String sql = "select * from t_user";
		try {
			//1、獲得連接
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			//3、執行查詢命令
			this.rs = ps.executeQuery();
			//4、取出執行結果
			List<User> list = new ArrayList<User>();
			while(rs.next()) {//如果有下一條
				String name = rs.getString("name");
				int userid = rs.getInt("user_id");
				int age = rs.getInt("age");
				String email = rs.getString("email");
				String address = rs.getString("address");
				String userno = rs.getString("userno");
				String password = rs.getString("password");
		
				User user = new User();
				user.setAddress(address);
				user.setAge(age);
				user.setEmail(email);
				user.setName(name);
				user.setPassword(password);
				user.setUserno(userno);
				user.setUserid(userid);
				
				list.add(user);
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return null;

2.3 登錄

代碼:

//執行sql查詢
	     String sql = "select * from t_user where userno='"+userno+"' and password='"+password+"'";

		try {
			//1、獲得連接
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			//3、執行查詢命令
			this.rs = ps.executeQuery();
			//4、取出執行結果
			while(rs.next()) {//如果有下一條
				String name = rs.getString("name");
				int userid = rs.getInt("user_id");
				int age = rs.getInt("age");
				String email = rs.getString("email");
				String address = rs.getString("address");
				
				User user = new User();
				user.setAddress(address);
				user.setAge(age);
				user.setEmail(email);
				user.setName(name);
				user.setPassword(password);
				user.setUserno(userno);
				user.setUserid(userid);
				
				return user;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}	
		
		return null;

結果:

2.4 搜索用戶列表

代碼:

//執行sql查詢
		String sql = "select * from t_user where userno like '%" + userno1 + "%'";
		try {
			//1、獲得連接
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			//3、執行查詢命令
			this.rs = ps.executeQuery();
			//4、取出執行結果
			List<User> list = new ArrayList<User>();
			while(rs.next()) {//如果有下一條
				String name = rs.getString("name");
				int userid = rs.getInt("user_id");
				int age = rs.getInt("age");
				String email = rs.getString("email");
				String address = rs.getString("address");
				String userno = rs.getString("userno");
				String password = rs.getString("password");
		
				User user = new User();
				user.setAddress(address);
				user.setAge(age);
				user.setEmail(email);
				user.setName(name);
				user.setPassword(password);
				user.setUserno(userno);
				user.setUserid(userid);
				
				list.add(user);
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return null;

結果:

2.5 刪除用戶

代碼:

String sql = "delete from t_user where user_id="+userid;
		try {
			//1、獲得連接
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			//3、執行刪除、修改、新增命令
			//result:數據庫受影響的行數
			int result = ps.executeUpdate();//成功或失敗,true后false
			if(result>0) {
				//成功
				return true;
			}else {
				//失敗
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return true;

結果:

2.6 根據id查詢用戶信息

代碼:

String sql = "select * from t_user where user_id=" + userid;
		try {
			//1、獲得連接(連接數據庫)
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			//3、執行查詢命令
			this.rs = ps.executeQuery();
			//4、取出執行結果
			User user = null;
			if(rs.next()) {//如果有下一條
				String name = rs.getString("name");
				int age = rs.getInt("age");
				String email = rs.getString("email");
				String address = rs.getString("address");
				String userno = rs.getString("userno");
				String password = rs.getString("password");
		
				user = new User();
				user.setAddress(address);
				user.setAge(age);
				user.setEmail(email);
				user.setName(name);
				user.setPassword(password);
				user.setUserno(userno);
				user.setUserid(Integer.parseUnsignedInt(userid));
			}
			return user;
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return null;

2.7 修改用戶

代碼:

String sql = "update t_user set userno=?,`password`=?,`name`=?,age=? where user_id=?";
		try {
			//1、獲得連接
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			
			ps.setString(1, user.getUserno());//第一個問號
			ps.setString(2, user.getPassword());
			ps.setString(3, user.getName());
			ps.setInt(4, user.getAge());
			ps.setInt(5, user.getUserid());
			
			
			//3、執行刪除、修改、新增命令
			//result:數據庫受影響的行數
			int result = ps.executeUpdate();//成功或失敗,true后false
			if(result>0) {
				//成功
				return true;
			}else {
				//失敗
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return true;

結果:

2.8 新增用戶

代碼:

String sql = "insert into t_user(userno,`password`,`name`,age) values(?,?,?,?)";
		try {
			//1、獲得連接
			this.conn = this.getConn();
			//2、獲得執行命令對象
			this.ps = conn.prepareStatement(sql);
			
			ps.setString(1, user.getUserno());//第一個問號
			ps.setString(2, user.getPassword());
			ps.setString(3, user.getName());
			ps.setInt(4, user.getAge());
//			ps.setString(5, user.getEmail());
//			ps.setString(6, user.getAddress());
			
			//3、執行刪除、修改、新增命令
			//result:數據庫受影響的行數
			int result = ps.executeUpdate();//成功或失敗,true后false
			if(result>0) {
				//成功
				return true;
			}else {
				//失敗
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return true;

結果:

2.9 LoginServlet

/**
 * 用戶登錄
 */
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public LoginServlet() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * 接收get請求
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}

	/**
	 * 接收post請求
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String userno = request.getParameter("userno");//取得賬號
		String password = request.getParameter("password");//取得密碼
		
		UserService userService = new UserService();
		//調用業務層方法
		User user = userService.login(userno, password);
		if(user != null) {
			//查詢用戶
			List<User> list = userService.findUserList();
			//查詢總頁數
			int count = userService.findUserCount();//數據總數
			Page page = new Page();
			int total = 0;//總頁數
			if(count % page.getPageSize() > 0) {
				total = count/page.getPageSize() + 1;
			}else {
				total = count/page.getPageSize();
			}
			
			//跳轉到首頁
			//request中的數據針對的是某一次請求,請求結束數據失效
			//request.setAttribute("user", user);
			//session對象針對的是同一個瀏覽器的不同窗口直接共享數據
			request.getSession().setAttribute("user", user);
			request.setAttribute("list", list);
			request.setAttribute("page", new Page().getPage());//當前第幾頁
			request.setAttribute("total", total);
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}else {
			//登陸失敗
			request.getRequestDispatcher("login.html").forward(request, response);
		}
	}

2.10 UserServlet

/**
 * 用戶控制器
 */
public class UserServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UserServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf8");
		
		String action = request.getParameter("action");//取得操作行為
		String userid = request.getParameter("userid");//取得用戶id
		UserService userService = new UserService();
		if(action != null && action.equals("delete")) {//刪除操作
			boolean result = userService.deleteUser(userid);
			if(result) {
				//刪除成功
				List<User> list = userService.findUserList();
				//跳轉到首頁
				//request.setAttribute("user", user);
				request.setAttribute("list", list);
				request.getRequestDispatcher("index.jsp").forward(request, response);
			}
		}else if(action != null && action.equals("toUpdate")){//跳轉到修改界面
			User user = userService.findUserById(userid);
			request.setAttribute("user", user);
			request.getRequestDispatcher("update.jsp").forward(request, response);	
		}else if(action != null && action.equals("update")) {
			String userno = request.getParameter("userno");//取得賬號
			String password = request.getParameter("password");//取得密碼
			String age = request.getParameter("age")!=null?request.getParameter("age"):"0";//取得年齡
			
			String name = request.getParameter("name");//取得姓名
			
			User user = new User();
			user.setUserid(Integer.parseInt(userid));
			user.setAge(Integer.parseInt(age));
			user.setName(name);
			user.setUserno(userno);
			user.setPassword(password);
			
			boolean result = userService.updateUser(user);
			if(result) {
				//修改成功
				//獲取用戶列表
				List<User> list = userService.findUserList();
				//跳轉到首頁
				//request.setAttribute("user", user);
				request.setAttribute("list", list);
				request.getRequestDispatcher("index.jsp").forward(request, response);
			}
		}else if(action != null && action.equals("toAdd")){//跳轉到新增界面
			request.getRequestDispatcher("add.jsp").forward(request, response);
		}else if(action != null && action.equals("add")) {//新增用戶
			String userno = request.getParameter("userno");//取得賬號
			String password = request.getParameter("password");//取得密碼
			String age = request.getParameter("age")!=null?request.getParameter("age"):"0";//取得年齡
			String name = request.getParameter("name");//取得姓名
			
			User user = new User();
			user.setAge(Integer.parseInt(age));
			user.setName(name);
			user.setUserno(userno);
			user.setPassword(password);
			
			boolean result = userService.addUser(user);
			if(result) {
				//添加成功
				//獲取用戶列表
				List<User> list = userService.findUserList();
				//跳轉到首頁
				//request.setAttribute("user", user);
				request.setAttribute("list", list);
				request.getRequestDispatcher("index.jsp").forward(request, response);
			}
		}else if(action != null && action.equals("findPage")) {//分頁查詢
			String page = request.getParameter("page") == null ? "1" : request.getParameter("page");//當前第幾頁
			Page p = new Page();
			p.setPage(Integer.parseInt(page));
			
			List<User> list = userService.findUserListByPage(p);
			//查詢總頁數
			int count = userService.findUserCount();//數據總數
			Page page2 = new Page();
			int total = 0;//總頁數
			if(count % page2.getPageSize() > 0) {
				total = count/page2.getPageSize() + 1;
			}else {
				total = count/page2.getPageSize();
			}
			//跳轉到首頁
			request.setAttribute("list", list);
			request.setAttribute("page", page);//記錄當前頁數,便於頁面取值
			request.setAttribute("total", total);
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}else {//搜索
			String userno = request.getParameter("userno");//取得賬號
			
			List<User> list = userService.findUserListByUserNo(userno);
			//跳轉到首頁
			//request.setAttribute("user", user);
			request.setAttribute("list", list);
			request.setAttribute("userno", userno);
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}
		
	}

}


}

3.Myssm項目部分功能實現

3.1 查詢用戶列表和分頁

代碼:

UserInfoController.java:


	/**
	 * 查詢用戶列表
	 * @throws Exception 
	 */
	@RequestMapping("/findUserInfoList")
	public void findUserInfoList(HttpServletRequest request,HttpServletResponse response) throws Exception{
		String pageIndex = request.getParameter("pageIndex");//頁面索引,0:第一頁,1:第二頁,依次類推
	    String pageSize = request.getParameter("pageSize");//每頁多少條
	    String username = request.getParameter("key");//搜索功能:獲取搜索參數值(用戶姓名)

	    HashMap mapParam = new HashMap();
	    mapParam.put("pageSize", Integer.parseInt(pageSize));
	    mapParam.put("rowNum", Integer.parseInt(pageSize)*Integer.parseInt(pageIndex));
	    mapParam.put("username", username);

	    List<UserInfo> userInfoList  =  userInfoService.findUserInfoList(mapParam);
	    int count = userInfoService.findUserInfoCount();//查詢數據總數
	    
	    HashMap map = new HashMap();
	    map.put("total", count);
	    map.put("data", userInfoList);
	    
	    String json = JSON.encode(map);
	    System.out.println(json);
	    //向前端返回數據
	    response.getWriter().write(json);
	    
	}

Mapper.xml:

  <!-- 查詢用戶列表 -->
  <select id = "findUserInfoList" resultMap="BaseResultMap" parameterType = "map" >
    select 
    <include refid = "Base_Column_List" />
    from user_info 
    <if test = "username != null" >
        where username like "%"#{username,jdbcType = VARCHAR}"%"
    </if> 
    limit #{rowNum},#{pageSize}
    <!-- limit ${(pageNo - 1) * pageSize},${pageSize}  -->
  </select>
  <!-- 查詢用戶數據總數 -->
  <select id = "findUserInfoCount" resultType = "int" parameterType = "map" >
    select count(*) as count from user_info 
  </select>

結果:

3.2 用戶登錄

代碼:

UserInfoController.java:

/**
	 * 用戶登錄
	 * @throws Exception 
	 */
	@RequestMapping("/userLogin")
	public void userLogin(HttpServletRequest request,HttpServletResponse response) throws Exception{
	    String username = request.getParameter("username");
	    String password = request.getParameter("pwd");
	    
	    UserInfo userInfo = new UserInfo();
	    userInfo.setUserno(username);
	    userInfo.setPassword(password);
	    UserInfo u = userInfoService.userLogin(userInfo);
	    if(u != null) {
	    	response.getWriter().write("success");
	    }else {
	    	response.getWriter().write("fail");
	    }
   
	}

Mapper.xml:

  <!-- 用戶登錄 -->
  <select id = "userLogin" resultMap = "BaseResultMap" parameterType = "com.fxy.book.model.UserInfo" >
    select * from user_info where userNo = #{userno,jdbcType = VARCHAR} and password = #{password,jdbcType = VARCHAR}
  </select>

結果:

3.3 新增用戶

代碼:

UserInfoController.java:

	/**
	 * 新增用戶
	 * @throws Exception 
	 */
	@RequestMapping("/addUserInfo")
	public void addUserInfo(HttpServletRequest request,HttpServletResponse response) throws Exception{
		String userid = request.getParameter("userid");
		if(userid==null||userid.equals("")){
		    userid = "0";
		}
		String username = request.getParameter("username");
	    String password = request.getParameter("password");
	    String userno = request.getParameter("userno");
	    String sex = request.getParameter("sex");
	    String address = request.getParameter("address");
	    String phone = request.getParameter("phone");
	    String role = request.getParameter("role");
	      
	    UserInfo userInfo = new UserInfo();
	    userInfo.setPassword(password);
	    if(userid!=null && !userid.equals("")) {
	    	userInfo.setUserid(Long.parseLong(userid));
		}
	    userInfo.setUserno(userno);
	    userInfo.setAddress(address);
	    userInfo.setPhone(phone);
	    userInfo.setRole(Integer.parseInt(role));;
	    userInfo.setSex(sex);
	    userInfo.setUsername(username);
	    
	    
	    int result = userInfoService.addUserInfo(userInfo);
	    if(result > 0) {
	    	response.getWriter().write("success");
	    }else {
	    	response.getWriter().write("fail");
	    }
	}

Mapper.xml:

  <insert id = "insertSelective" parameterType = "com.fxy.book.model.UserInfo" >
    insert into user_info
    <trim prefix = "(" suffix = ")" suffixOverrides = "," >
      <if test = "userid != null" >
        userId,
      </if>
      <if test = "userno != null" >
        userNo,
      </if>
      <if test = "password != null" >
        password,
      </if>
      <if test = "username != null" >
        userName,
      </if>
      <if test = "sex != null" >
        sex,
      </if>
      <if test = "address != null" >
        address,
      </if>
      <if test = "phone != null" >
        phone,
      </if>
      <if test = "role != null" >
        role,
      </if>
      <if test = "createtime != null" >
        createTime,
      </if>
    </trim>
  </insert>

結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM