【数据库设计】mysql+jsp实现房屋租赁管理系统(前端jsp部分,使用servlet)

程序代码

(1)用户登陆代码

<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>登录页面</title>
    <style type="text/css">
        *{
    
    
            margin: 0px;
            padding: 0px;
            font-family: "microsoft yahei";
        }
        html,body{
    
    
            background-image: url(static/img/login-background.webp);
            background-size: 100% 100%;
            height: 100%;
        }
        .login{
    
    
            position: absolute;
            background-color: rgba(255,255,255,1);
            top: 25%;
            left: 60%;
            right: 10%;
            bottom: 25%;
            border-radius: 5px;
        }
        .title,.u,.p,.l,.tips,.s,.r{
    
    
            position: absolute;
            width: 100%;
        }
        input{
    
    
            height: 35px;
            border: 0px;
            border-radius: 5px;
            width: 80%;
            padding-left: 18px;
            box-sizing: border-box;
        }
        .uname{
    
    
            background: #F2F2FA url(static/img/login-user.png) no-repeat left;
        }
        .pwd{
    
    
            background: #F2F2FA url(static/img/login-pwd.png) no-repeat left;
        }
        button{
    
    
            background-color: #2db215;
            height: 35px;
            width: 80%;
            border: 0px;
            border-radius: 5px;
            color: #FFF;
            font-size: 16px;
        }
        select{
    
    
            width: 80%;
            height: 35px;
            border-radius: 4px;
            border:1px solid #e1e1e1;
        }
        .title{
    
    
            top: 0%;
            bottom: 80%;
            text-align: center;
            font-size: 25px;
            font-weight: bold;
            padding-top: 10px;
            box-sizing: border-box;
        }
        .u{
    
    
            top: 20%;
            bottom: 60%;
            left: 10%;
        }
        .p{
    
    
            top: 40%;
            bottom: 40%;
            left: 10%;
        }
        .s{
    
    
            top: 57%;
            bottom: 13%;
            left: 10%;
        }
        .l{
    
    
            top: 75%;
            bottom: 15%;
            left: 10%;
        }
        .tips{
    
    
            top: 13%;
            font-size: 13px;
            color: red;
            text-align: center;
        }
        .r{
    
    
            top: 90%;
            font-size: 13px;
            color: red;
            text-align: center;
        }
    </style>
</head>
<body>
<div class="login">
    <div class="title">
        房屋管理系统
    </div>
    <form action="login" method="post">
        <div class="u">
            <input type="text" class="uname" name="userName" value="strcat"  />
        </div>
        <div class="p">
            <input type="password" class="pwd" name="password" value="123456"  />
        </div>
        <div class="s">
            <select name="type">
                <option value="">请选择登陆类型</option>
                <option selected="selected" value="0">房主</option>
                <option value="1">租赁者</option>
            </select>
        </div>
        <div class="l">
            <button type="submit">登录</button>
        </div>
    </form>
    <div class="r">
        <a href="register.jsp" style="color:#2db215">注册新用户</a>
    </div>
    <div class="tips">
        ${
    
    error}
    </div>
</div>
</body>
</html>

(2)用户注册代码

<%@page contentType="text/html; charset=utf-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>注册用户</title>
    <link rel="stylesheet"  href="${basePath}static/css/styles.css" />
    <link rel="stylesheet"  href="${basePath}static/css/font-awesome-4.7.0/css/font-awesome.min.css" />
    <script  src="${basePath}static/js/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function(){
    
    
            $('.menux p').click(function(){
    
    
                $(this).siblings('ul').slideUp(200);
                $(this).next('ul').slideToggle(200);
            });
            $('.menux p:first').trigger("click");

            $('.menux ul a').click(function(){
    
    
                $('iframe').attr("src",$(this).attr("url"));
                $('.menu_title').html($(this).attr("title"));
            });
        })
    </script>
</head>
<body>
<div class="header">
    <div class="logo">房屋管理系统</div>
</div>
<div class="left">
    <div class="title">
        <i class="fa fa-home"></i>
        注册用户
    </div>
    <div class="menux">
        <p>
            <i class="fa fa-info-circle"></i>
            <i class="fa fa-angle-right point"></i>
            注册用户类型
        </p>
        <ul>
            <li>
                <a  href="javascript:void(0);" url="page/Owner_users/register.jsp"  title="注册房主">
                    <i class="fa fa-caret-right"></i>
                    注册房主
                </a>
            </li>
            <li>
                <a  href="javascript:void(0);" url="page/Tenant_users/register.jsp"  title="注册租赁者">
                    <i class="fa fa-caret-right"></i>
                    注册租赁者
                </a>
            </li>
        </ul>
    </div>
</div>
<div class="main">
    <div class="location">
        <i class="fa fa-home"></i>
        <span class="menu_title"></span>
    </div>
    <iframe src="main"  width="100%" height="90%" name="mainFrame"  id="mainFrame" frameborder="0px"></iframe>
</div>
</body>
</html>

(3)用户信息界面

<%@ page import="entity.Owner_users" %>
<%@ page import="entity.Tenant_users" %>
<%@page contentType="text/html; charset=utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
<link  rel="stylesheet"  href="static/css/styles.css" />
      <link rel="stylesheet"  href="static/css/font-awesome-4.7.0/css/font-awesome.min.css" />
      <script  src="static/js/jquery.min.js" type="text/javascript"></script>
      <script  src="static/js/jquery-validation-1.14.0/jquery.validate.js" type="text/javascript"></script>
      <script  src="static/js/jquery-validation-1.14.0/localization/messages_zh.js" type="text/javascript"></script>
</head>
<body style="height: 100%; margin: 0">
<div class="add">
   <table class="tablelist" style="width: 50%;margin-left:50px">
      <c:if test="${type == 0}">
         <%Owner_users owner_users = (Owner_users) session.getAttribute("user");%>
         <tr>
            <td width="120px">身份</td>
            <td>房主</td>
         </tr>
         <tr>
            <td width="120px">用户id</td>
            <td><%=owner_users.getOID()%></td>
         </tr>
         <tr>
            <td width="120px">用户名</td>
            <td><%=owner_users.getUserName()%></td>
         </tr>
         <tr>
            <td width="120px">密码</td>
            <td><%=owner_users.getPassword()%></td>
         </tr>
         <tr>
            <td width="120px">姓名</td>
            <td><%=owner_users.getOName()%></td>
         </tr>
         <tr>
            <td width="120px">地址</td>
            <td><%=owner_users.getOAddress()%></td>
         </tr>
         <tr>
            <td width="120px">电话</td>
            <td><%=owner_users.getOTelephone()%></td>
         </tr>
      </c:if>
      <c:if test="${type == 1}">
         <%Tenant_users tenant_users = (Tenant_users) session.getAttribute("user");%>
         <tr>
            <td width="120px">身份</td>
            <td>租赁者</td>
         </tr>
         <tr>
            <td width="120px">用户id</td>
            <td><%=tenant_users.getTID()%></td>
         </tr>
         <tr>
            <td width="120px">用户名</td>
            <td><%=tenant_users.getUserName()%></td>
         </tr>
         <tr>
            <td width="120px">密码</td>
            <td><%=tenant_users.getPassword()%></td>
         </tr>
         <tr>
            <td width="120px">姓名</td>
            <td><%=tenant_users.getTName()%></td>
         </tr>
         <tr>
            <td width="120px">地址</td>
            <td><%=tenant_users.getTAddress()%></td>
         </tr>
         <tr>
            <td width="120px">电话</td>
            <td><%=tenant_users.getTTelephone()%></td>
         </tr>
         <tr>
            <td width="120px">性别</td>
            <td><%=tenant_users.getTSex()%></td>
         </tr>
      </c:if>
   </table>
   </div>
</body>
</html>

(4)主页

<%@page contentType="text/html; charset=utf-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>系统首页</title>
   <link rel="stylesheet"  href="${basePath}static/css/styles.css" />
   <link rel="stylesheet"  href="${basePath}static/css/font-awesome-4.7.0/css/font-awesome.min.css" />
   <script  src="${basePath}static/js/jquery.min.js" type="text/javascript"></script>
   <script type="text/javascript">
      $(function(){
    
    
         $('.menux p').click(function(){
    
    

            $(this).siblings('ul').slideUp(200);
            $(this).next('ul').slideToggle(200);
         });
         $('.menux p:first').trigger("click");

         $('.menux ul a').click(function(){
    
    
            $('iframe').attr("src",$(this).attr("url"));
            $('.menu_title').html($(this).attr("title"));
         });

         $('.logout').click(function(){
    
    
            if(confirm("确定要退出吗?")){
    
    
               window.location.href = "logout";
            }
         });

      })
   </script>
</head>
<body>
<div class="header">
   <div class="logo">房屋管理系统</div>
   <div class="user">
      <i class="fa fa-caret-down point"></i>
      <i class="fa fa-user"></i>
      ${
    
    user.userName}
      <ul>
         <li><a  target="mainFrame" href="info.jsp">个人信息</a></li>
         <li><a  href="javascript:void(0)" class="logout">退出登录</a></li>
      </ul>
   </div>
</div>
<div class="left">
   <div class="title">
      <i class="fa fa-home"></i>
      系统功能
   </div>
   <div class="menux">
      <c:if test="${type == 0}">
         <p>
            <i class="fa fa-info-circle"></i>
            <i class="fa fa-angle-right point"></i>
            房屋管理
         </p>
         <ul>
            <li>
               <a  href="javascript:void(0);" url="http://localhost:8080/untitled1_war_exploded/owner_users?method=listHouse"  title="已注册房屋">
                  <i class="fa fa-caret-right"></i>
                  已注册房屋
               </a>
            </li>
            <li>
               <a  href="javascript:void(0);" url="page/Owner_users/addHouse.jsp"  title="添加房屋">
                  <i class="fa fa-caret-right"></i>
                  添加房屋
               </a>
            </li>
         </ul>
         <p>
            <i class="fa fa-info-circle"></i>
            <i class="fa fa-angle-right point"></i>
            租房论坛
         </p>
         <ul>
            <li>
               <a  href="javascript:void(0)" url="http://localhost:8080/untitled1_war_exploded/forum?method=getForum"  title="查看论坛">
                  <i class="fa fa-caret-right"></i>
                  查看论坛
               </a>
            </li>
            <li>
               <a  href="javascript:void(0)" url="page/leaveMessage.jsp"  title="留言">
                  <i class="fa fa-caret-right"></i>
                  留言
               </a>
            </li>
         </ul>
      </c:if>
      <c:if test="${type == 1}">
         <p>
            <i class="fa fa-info-circle"></i>
            <i class="fa fa-angle-right point"></i>
            租 房
         </p>
         <ul>
            <li>
               <a  href="javascript:void(0)" url="http://localhost:8080/untitled1_war_exploded/tenant_users?method=getVacantHouse"  title="查看房屋">
                  <i class="fa fa-caret-right"></i>
                  查看房屋
               </a>
            </li>
            <li>
               <a  href="javascript:void(0)" url="http://localhost:8080/untitled1_war_exploded/tenant_users?method=getSeenHouse"  title="已看房屋">
                  <i class="fa fa-caret-right"></i>
                  已看房屋
               </a>
            </li>
            <li>
               <a  href="javascript:void(0)" url="http://localhost:8080/untitled1_war_exploded/tenant_users?method=getRentedHouse"  title="已租房屋">
                  <i class="fa fa-caret-right"></i>
                  已租房屋
               </a>
            </li>
         </ul>
         <p>
            <i class="fa fa-info-circle"></i>
            <i class="fa fa-angle-right point"></i>
            租房论坛
         </p>
         <ul>
            <li>
               <a  href="javascript:void(0)" url="http://localhost:8080/untitled1_war_exploded/forum?method=getForum"  title="查看论坛">
                  <i class="fa fa-caret-right"></i>
                  查看论坛
               </a>
            </li>
            <li>
               <a  href="javascript:void(0)" url="page/leaveMessage.jsp"  title="留言">
                  <i class="fa fa-caret-right"></i>
                  留言
               </a>
            </li>
         </ul>
      </c:if>
   </div>
</div>
<div class="main">
   <div class="location">
      <i class="fa fa-home"></i>
      <span class="menu_title"></span>
   </div>
   <iframe src="main.jsp"  scrolling="no" width="100%" height="90%" name="mainFrame"  id="mainFrame" frameborder="0px"></iframe>
</div>
</body>
</html>

(5)分页

package util;

import java.util.List;

public class PageInfo<T> {
    
    

   private Integer pageNo;
   private int pageSize = 10;
   private Long totalCount;
   private List<T> list;
   
   public PageInfo(Integer pageNo) {
    
    
      if(pageNo == null) {
    
    
         this.pageNo = 1;
      }else {
    
    
         this.pageNo = pageNo;
      }
   }
   //获取总页数
   public long getTotalPage() {
    
    
      Long totalPage = totalCount/pageSize;
      if(totalCount%pageSize!=0 || totalPage == 0) {
    
    
         totalPage++;
      }
      return totalPage;
   }
   
   //下一页
   public int getNextPage() {
    
    
      Integer nextPage = 0;
      if(nextPage<this.getTotalPage()) {
    
    
         nextPage = pageNo+1;
      }else {
    
    
         nextPage = pageNo;
      }
      return nextPage;
   }
   //上一页
   public int getPrePage() {
    
    
      Integer prePage = 0;
      if(pageNo>1) {
    
    
         prePage = pageNo-1;
      }else {
    
    
         prePage = pageNo;
      }
      return prePage;
   }
   //是否第一页    
   public boolean isFirstPage() {
    
    
      boolean isFirstPage = false;
      if(pageNo>1) {
    
    
         isFirstPage = false;
      }else {
    
    
         isFirstPage = true;
      }
      return isFirstPage;
   }
   //是否最后一页
   public boolean isLastPage() {
    
    
      boolean isLastPage = false;
      if(pageNo<this.getTotalPage()) {
    
    
         isLastPage = false;
      }else {
    
    
         isLastPage = true;
      }
      return isLastPage;
   }

   public Integer getPageNo() {
    
    
      return pageNo;
   }

   public void setPageNo(Integer pageNo) {
    
    
      this.pageNo = pageNo;
   }

   public int getPageSize() {
    
    
      return pageSize;
   }

   public void setPageSize(int pageSize) {
    
    
      this.pageSize = pageSize;
   }

   public List<T> getList() {
    
    
      return list;
   }

   public void setList(List<T> list) {
    
    
      this.list = list;
   }

   public Long getTotalCount() {
    
    
      return totalCount;
   }

   public void setTotalCount(Long totalCount) {
    
    
      this.totalCount = totalCount;
   }
}

(6)登陆servlet

package servlet;

import java.io.IOException;
import java.sql.SQLException;

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 javax.servlet.http.HttpSession;

import entity.*;
import dao.*;

import org.apache.commons.lang3.StringUtils;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    
    
   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
      String userName = req.getParameter("userName");
      String password = req.getParameter("password");
      String type = req.getParameter("type");
      //判断非空
      if(StringUtils.isBlank(userName) || StringUtils.isBlank(password) || StringUtils.isBlank(type)) {
    
    
         req.setAttribute("error", "录入信息不能为空!");
         req.getRequestDispatcher("login.jsp").forward(req, resp);
         return;
      }
      //新建会话
      HttpSession session = req.getSession();
      if(session==null){
    
    
         System.out.println("wrong");
      }
      session.setAttribute("type",type);
      if(StringUtils.isNotBlank(type)) {
    
    
         try {
    
    
            if("0".equals(type)) {
    
    
               //房主登录验证
               Owner_users owner_users = DaoFactory.getInstance().getOwner_usersDao().login(userName, password);
               if(owner_users != null) {
    
    
                  session.setAttribute("user", owner_users);
                  session.setAttribute("type", type);
                  resp.sendRedirect("index.jsp");
               }else {
    
    
                  req.setAttribute("error", "用户名或密码错误!");
                  req.getRequestDispatcher("login.jsp").forward(req, resp);
               }
            }else if("1".equals(type)) {
    
    
               //租赁者登录验证
               Tenant_users tenant_users = DaoFactory.getInstance().getTenant_usersDao().login(userName, password);
               if(tenant_users != null) {
    
    
                  session.setAttribute("user", tenant_users);
                  session.setAttribute("type", type);
                  resp.sendRedirect("index.jsp");
               }else {
    
    
                  System.out.println(userName+password);
                  req.setAttribute("error", "用户名或密码错误!");
                  req.getRequestDispatcher("login.jsp").forward(req, resp);
               }
            }
         } catch (SQLException e) {
    
    
            e.printStackTrace();
         }
      }
   }
   
}

(7)登出servlet

package servlet;

import java.io.IOException;
import java.sql.SQLException;

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 javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;

@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
    
    

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
      req.getSession().invalidate();
      resp.sendRedirect("login.jsp");
   }
   
}

(8)房主servlet

package servlet;

import dao.DaoFactory;
import entity.House;
import entity.Owner_users;
import org.apache.commons.lang3.StringUtils;
import util.PageInfo;
import util.PathUtils;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Path;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.net.DatagramPacket;
import java.sql.SQLException;

@WebServlet("/owner_users")
public class Owner_usersServlet extends HttpServlet {
    
    

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        String method = request.getParameter("method");//获取表单提交的方法
        System.out.println("接受到请求为"+method);
        if("listHouse".equals(method)) {
    
    
            this.listHouse(request,response);
        } else if("addHouse".equals(method)) {
    
    
            this.addHouse(request,response);
        } else if("deleteHouse".equals(method)) {
    
    
            this.deleteHouse(request,response);
        } else if("editHouse".equals(method)) {
    
    
            this.findByHID(request,response);
        } else if("editSubmit".equals(method)) {
    
    
            this.editSubmit(request,response);
        } else if("register".equals(method)) {
    
    
            this.register(request,response);
        }

    }
    //Owner_usersServlet处理注册房主用户请求
    private void register(HttpServletRequest request, HttpServletResponse response) {
    
    
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String OName = request.getParameter("OName");
        String OAddress = request.getParameter("OAddress");
        String OTelephone = request.getParameter("OTelephone");

        Owner_users owner_users = new Owner_users();
        owner_users.setUserName(userName);
        owner_users.setPassword(password);
        owner_users.setOName(OName);;
        owner_users.setOAddress(OAddress);
        owner_users.setOTelephone(OTelephone);
        try {
    
    
            DaoFactory.getInstance().getOwner_usersDao().add(owner_users);
            response.sendRedirect("http://localhost:8080/untitled1_war_exploded/login.jsp");
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //Owner_usersServlet处理查询房屋请求
    private void listHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        Integer pageNo = getIntParameter(request,"pageNo");
        //新建一个house对象
        House house = new House();
        //获得当前会话的用户
        HttpSession session = request.getSession();
        Owner_users owner_users = (Owner_users) session.getAttribute("user");
        //构造一个pageInfo对象
        PageInfo<House> pageInfo = new PageInfo<>(pageNo);
        try {
    
    
            pageInfo = DaoFactory.getInstance().getHouseDao().listHouse(owner_users,pageInfo);
        } catch (Exception e1) {
    
    
            e1.printStackTrace();
        }
        try {
    
    
            request.setAttribute("pageInfo",pageInfo);
            //回写到页面
            request.setAttribute("house",house);
            //将结果发送到房主查询房屋界面
            request.getRequestDispatcher("page/Owner_users/listHouse.jsp").forward(request,response);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //Owner_usersServlet处理添加房屋请求
    public void addHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        String HAddress = request.getParameter("HAddress");
        String layout = request.getParameter("layout");
        Integer capacity = getIntParameter(request,"capacity");
        Integer rent = getIntParameter(request,"rent");
        Boolean con = getBoolParameter(request,"con");
        //获得当前会话的用户,提取OID
        HttpSession session = request.getSession();
        Owner_users owner_users = (Owner_users) session.getAttribute("user");
        Integer OID = owner_users.getOID();

        House house = new House();
        house.setHAddress(HAddress);
        house.setCapacity(capacity);
        house.setLayout(layout);
        house.setRent(rent);
        house.setCon(con);
        house.setOID(OID);

        try {
    
    
            DaoFactory.getInstance().getHouseDao().add(house);
            //修改成功后跳转到查询房屋界面
            response.sendRedirect(PathUtils.getBasePath(request)+"owner_users?method=listHouse");
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
    //Owner_usersServlet处理删除房屋请求
    public void deleteHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        String HID = request.getParameter("HID");
        try {
    
    
            DaoFactory.getInstance().getHouseDao().delete(Integer.parseInt(HID));
            response.sendRedirect(PathUtils.getBasePath(request)+"owner_users?method=listHouse");
        } catch(Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //Owner_usersServlet处理编辑房屋请求
    public void editSubmit(HttpServletRequest request, HttpServletResponse response) {
    
    
        Integer HID = getIntParameter(request,"HID");
        String HAddress = request.getParameter("HAddress");
        String layout = request.getParameter("layout");
        Integer capacity = getIntParameter(request,"capacity");
        Integer rent = getIntParameter(request,"rent");
        Boolean con = getBoolParameter(request,"con");
        //获得当前会话的用户,提取OID
        HttpSession session = request.getSession();
        Owner_users owner_users = (Owner_users) session.getAttribute("user");
        Integer OID = owner_users.getOID();

        House house = new House();
        house.setHID(HID);
        house.setHAddress(HAddress);
        house.setCapacity(capacity);
        house.setLayout(layout);
        house.setRent(rent);
        house.setCon(con);
        house.setOID(OID);
        try {
    
    
            DaoFactory.getInstance().getHouseDao().update(house);
            //直接重定向到列表页面
            response.sendRedirect(PathUtils.getBasePath(request)+"owner_users?method=listHouse");
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
    //转Integer类型
    public Integer getIntParameter(HttpServletRequest request,String name) {
    
    
        if(StringUtils.isNoneBlank(request.getParameter(name))) {
    
    
            return Integer.parseInt(request.getParameter(name));
        }else {
    
    
            return null;
        }
    }
    //转Boolean类型
    public Boolean getBoolParameter(HttpServletRequest request,String name) {
    
    
        if(StringUtils.isNoneBlank(request.getParameter(name))) {
    
    
            return Boolean.parseBoolean(request.getParameter(name));
        }
        else {
    
    
            return null;
        }
    }
    //用HID查找房屋对象
    private void findByHID(HttpServletRequest request, HttpServletResponse response) {
    
    
        String HID = request.getParameter("HID");
        try {
    
    
            House house = DaoFactory.getInstance().getHouseDao().findByHID(Integer.parseInt(HID));
            request.setAttribute("house",house);
            request.getRequestDispatcher("page/Owner_users/editHouse.jsp").forward(request,response);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}

(9)租赁者servlet

package servlet;

import dao.DaoFactory;
import entity.*;
import entity.Record;
import org.apache.commons.lang3.StringUtils;
import util.PageInfo;
import util.PathUtils;

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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/tenant_users")
public class Tenant_usersServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        String method = request.getParameter("method");//获取表单提交的方法
        System.out.println("接受到请求为"+method);
        if("getVacantHouse".equals(method)) {
    
    
            this.getVacantHouse(request,response);
        } else if("seeHouse".equals(method)) {
    
    
            this.seeHouse(request,response);
        } else if("getSeenHouse".equals(method)) {
    
    
            this.getSeenHouse(request,response);
        } else if("rentHouse".equals(method)) {
    
    
            try {
    
    
                this.rentHouse(request,response);
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        } else if("register".equals(method)) {
    
    
            this.register(request,response);
        } else if("getRentedHouse".equals(method)) {
    
    
            this.getRentedHouse(request,response);
        } else if("checkItOut".equals(method)) {
    
    
            this.checkItOut(request,response);
        }
    }

    private void checkItOut(HttpServletRequest request, HttpServletResponse response) {
    
    
        String CID = request.getParameter("CID");
        try {
    
    
            DaoFactory.getInstance().getChargeDao().delete(Integer.parseInt(CID));
            response.sendRedirect(PathUtils.getBasePath(request)+"tenant_users?method=getVacantHouse");
        } catch(Exception e) {
    
    
            e.printStackTrace();
        }
    }

    private void seeHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        //获取当前会话的用户
        HttpSession session = request.getSession();
        Tenant_users tenant_users = (Tenant_users) session.getAttribute("user");

        Integer TID = tenant_users.getTID();
        Integer HID = getIntParameter(request,"HID");

        Record record = new Record();
        record.setHID(HID);
        record.setTID(TID);
        try {
    
    
            DaoFactory.getInstance().getRecordDao().add(record);
            //转到展示已看过的房子页面
            response.sendRedirect("http://localhost:8080/untitled1_war_exploded/tenant_users?method=getSeenHouse");
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //得到当前会话的租赁者所看房屋
    private void getSeenHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        Integer pageNo = getIntParameter(request,"pageNo");
        //构造一个pageInfo对象
        PageInfo<SeenHouse> pageInfo = new PageInfo<>(pageNo);
        HttpSession session = request.getSession();
        Tenant_users tenant_users = (Tenant_users) session.getAttribute("user");
        System.out.println("租赁者的id为"+tenant_users.getTID());
        try {
    
    
            pageInfo = DaoFactory.getInstance().getSeenHouseDao().getSeenHouse(tenant_users,pageInfo);
        } catch (Exception e1) {
    
    
            e1.printStackTrace();
        }
        try {
    
    
            request.setAttribute("pageInfo",pageInfo);
            //将结果发送到展示已看过房屋界面
            request.getRequestDispatcher("page/Tenant_users/seenHouse.jsp").forward(request,response);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //得到当前会话的租赁者所租用房屋
    private void getRentedHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        Integer pageNo = getIntParameter(request,"pageNo");
        //构造一个pageInfo对象
        PageInfo<RentedHouse> pageInfo = new PageInfo<>(pageNo);
        HttpSession session = request.getSession();
        Tenant_users tenant_users = (Tenant_users) session.getAttribute("user");
        try {
    
    
            pageInfo = DaoFactory.getInstance().getRentedHouseDao().getRentedHouse(tenant_users,pageInfo);
        } catch (Exception e1) {
    
    
            e1.printStackTrace();
        }
        try {
    
    
            request.setAttribute("pageInfo",pageInfo);
            //转到已租用房屋界面
            request.getRequestDispatcher("page/Tenant_users/rentedHouse.jsp").forward(request,response);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }

    }
    //注册
    private void register(HttpServletRequest request, HttpServletResponse response) {
    
    
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String TName = request.getParameter("OName");
        String TAddress = request.getParameter("OAddress");
        String TTelephone = request.getParameter("OTelephone");
        String TSex = request.getParameter("TSex");

        Tenant_users tenant_users = new Tenant_users();
        tenant_users.setUserName(userName);
        tenant_users.setPassword(password);
        tenant_users.setTName(TName);;
        tenant_users.setTAddress(TAddress);
        tenant_users.setTTelephone(TTelephone);
        tenant_users.setTSex(TSex);
        try {
    
    
            DaoFactory.getInstance().getTenant_usersDao().add(tenant_users);
            response.sendRedirect("http://localhost:8080/untitled1_war_exploded/login.jsp");
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //Tenant_usersServlet处理租房请求,产生看房记录
    private void rentHouse(HttpServletRequest request, HttpServletResponse response) throws SQLException {
    
    
        HttpSession session = request.getSession();
        Tenant_users tenant_users = (Tenant_users) session.getAttribute("user");

        Integer TID = tenant_users.getTID();
        Integer HID = getIntParameter(request, "HID");
        Integer RID = DaoFactory.getInstance().getRecordDao().getRID(TID,HID);
        Integer charge = getIntParameter(request, "charge");
        Double amount = 0.0;
        //超过10000的部分收10%,超过1000的部分收5%,超过100的部分收1%
        if(charge > 10000) {
    
    
            amount += (charge-10000)*0.1;
            charge -= 10000;
        }
        if(charge > 1000) {
    
    
            amount += (charge-1000)*0.05;
            charge -= 1000;
        }
        if(charge > 100) {
    
    
            amount += (charge-100)*0.01;
            charge -= 100;
        }
        Charge entity = new Charge();
        entity.setRID(RID);
        entity.setAmount(amount);
        try {
    
    
            DaoFactory.getInstance().getChargeDao().add(entity);
            //租房成功后跳转到已租用房屋界面
            response.sendRedirect("http://localhost:8080/untitled1_war_exploded/tenant_users?method=getRentedHouse");
            //request.getRequestDispatcher("page/Tenant_users/rentedHouse.jsp").forward(request,response);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //Tenant_usersServlet处理查询房屋请求(展示所有空闲房屋)
    private void getVacantHouse(HttpServletRequest request, HttpServletResponse response) {
    
    
        Integer pageNo = getIntParameter(request,"pageNo");
        //构造一个pageInfo对象
        PageInfo<VacantHouse> pageInfo = new PageInfo<>(pageNo);
        try {
    
    
            pageInfo = DaoFactory.getInstance().getVacantHouseDao().seeVacantHouse(pageInfo);
        } catch (Exception e1) {
    
    
            e1.printStackTrace();
        }
        try {
    
    
            request.setAttribute("pageInfo",pageInfo);
            //将结果发送到租赁者看房页面
            request.getRequestDispatcher("page/Tenant_users/seeHouse.jsp").forward(request,response);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
    //转Integer类型
    public Integer getIntParameter(HttpServletRequest request,String name) {
    
    
        if(StringUtils.isNoneBlank(request.getParameter(name))) {
    
    
            return Integer.parseInt(request.getParameter(name));
        }else {
    
    
            return null;
        }
    }
}

(10)房主用户Dao

package dao;

import entity.Owner_users;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import util.PropertiesUtils;

import java.sql.SQLException;
import java.util.List;

public class Owner_usersDao {
    
    
    public void add(Owner_users owner_users) throws SQLException {
    
    
        QueryRunner queryRunner = new QueryRunner(PropertiesUtils.getDataSource());
        String sql = "INSERT INTO owner_users(userName,password,OName,OAddress,OTelephone) VALUES (?,?,?,?,?)";
        Object[] params = {
    
    owner_users.getUserName(), owner_users.getPassword(), owner_users.getOName(), owner_users.getOAddress(), owner_users.getOTelephone()};
        queryRunner.update(sql, params);
        System.out.println("注册成功!");
    }

    public void delete(String ID) throws SQLException {
    
    
        QueryRunner queryRunner = new QueryRunner(PropertiesUtils.getDataSource());
        String sql = "DELETE FROM owner_users WHERE OID = ?";
        Object[] params = {
    
    ID};
        queryRunner.update(sql, params);
    }

    public Owner_users login(String userName,String password) throws  SQLException {
    
    
        QueryRunner queryRunner = new QueryRunner(PropertiesUtils.getDataSource());
        String sql = "SELECT * FROM owner_users WHERE userName = ? AND password = ?";
        Object[] params = {
    
    userName,password};
        Owner_users entity = queryRunner.query(sql, new BeanHandler<>(Owner_users.class),params);
        return entity;
    }

}

(11)Daofactory

package dao;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;


public class DaoFactory {
    
    

   //类似于工厂+单例模式
   private static DaoFactory factory = new DaoFactory();

   private Map<String, Object> map = new ConcurrentHashMap<>();
   
   private DaoFactory() {
    
    

   }

   public static DaoFactory getInstance() {
    
    
      return factory;
   }

   public Owner_usersDao getOwner_usersDao() {
    
    
      Owner_usersDao dao = (Owner_usersDao) map.get("Owner_usersDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new Owner_usersDao();
         map.put("Owner_usersDao", dao);
      }
      return dao;
   }

   public Tenant_usersDao getTenant_usersDao() {
    
    
      Tenant_usersDao dao = (Tenant_usersDao) map.get("Tenant_usersDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new Tenant_usersDao();
         map.put("Tenant_usersDao", dao);
      }
      return dao;
   }

   public HouseDao getHouseDao() {
    
    
      HouseDao dao = (HouseDao) map.get("HouseDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new HouseDao();
         map.put("HouseDao", dao);
      }
      return dao;
   }

    public VacantHouseDao getVacantHouseDao() {
    
    
      VacantHouseDao dao = (VacantHouseDao) map.get("VacantHouseDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new VacantHouseDao();
         map.put("VacantHouseDao", dao);
      }
      return dao;
    }
   public ChargeDao getChargeDao() {
    
    
      ChargeDao dao = (ChargeDao) map.get("ChargeDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new ChargeDao();
         map.put("ChargeDao", dao);
      }
      return dao;
   }

   public RecordDao getRecordDao() {
    
    
      RecordDao dao = (RecordDao) map.get("RecordDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new RecordDao();
         map.put("RecordDao", dao);
      }
      return dao;
   }

   public RentedHouseDao getRentedHouseDao () {
    
    
      RentedHouseDao dao = (RentedHouseDao) map.get("RentedHouseDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new RentedHouseDao();
         map.put("RentedHouseDao", dao);
      }
      return dao;
   }

    public SeenHouseDao getSeenHouseDao() {
    
    
      SeenHouseDao dao = (SeenHouseDao) map.get("SeenHouseDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new SeenHouseDao();
         map.put("SeenHouseDao", dao);
      }
      return dao;
    }

   public MessageDao getMessageDao() {
    
    
      MessageDao dao = (MessageDao) map.get("MessageDao");
      if(dao != null) {
    
    
         return dao;
      }else {
    
    
         dao = new MessageDao();
         map.put("MessageDao", dao);
      }
      return dao;
   }
}

(11)论坛主界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>论坛</title>
    <link rel="stylesheet"  href="${basePath}static/css/styles.css" />
    <link rel="stylesheet"  href="${basePath}static/css/font-awesome-4.7.0/css/font-awesome.min.css" />
    <script  src="${basePath}static/js/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<table class="tablelist">
    <thead>
    <tr>
        <th>留言编号</th>
        <th>留言内容</th>
        <th>留言时间</th>
        <th>用户身份</th>
        <th>用户编号</th>
    </tr>
    </thead>
    <c:forEach items="${pageInfo.list}" var="message">
        <tr>
            <td>${
    
    message.MID}</td>
            <td>${
    
    message.content}</td>
            <td><fmt:formatDate value="${message.createDate}" type="both"/></td>
            <c:if test="${message.OID!=null}">
                <td>房主</td>
                <td>${
    
    message.OID}</td>
            </c:if>
            <c:if test="${message.TID!=null}">
                <td>租赁者</td>
                <td>${
    
    message.TID}</td>
            </c:if>
        </tr>
    </c:forEach>
</table>
<%@include file="include/page.jsp"%>
</form>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_51152918/article/details/126729294