基于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