项目编号:BS-PT-043
项目运行环境:
开发工具:IDEA / ECLLIPSE
数据库:MYSQL5.7
应用服务器:TOMCAT8.5.31
后台开发技术:Jsp+Servlet+Jdbc
前端开发技术:Jquery+ajax+BootStrap
随着中国经济深化改革,经济不断走强,更多的资源越来越向大城市集中,城市的虹吸效应越来越强,越来越多的人到大城市寻找工作机会,这些有来自大学的毕业生,有来自农村的打工人,他们来到一个陌生的城市,最先需要的就是一个住所。而近年来不断飙升的房价让这些来城市寻求发展追逐梦想的人们望而却步,而租房则成了他们唯一的选择。以往人们租房都是通过亲朋友好友介绍,后来发展了专业的租房中介机构,像链家等大型房产中介遍布各大城市。但是他们的收费较高,很多时候让这些初来乍到,还未有积蓄的人们有时候实在难以承受。能否降低交易的金钱成本和时间成本,运用互联网信息化的技术手段来解决?
基于这个问题的思考,开发了这套基于JavaWeb的在线租房系统。这个系统使得我们的房源拥有者,比如像房产中介可以在线发布房源信息,房客可以在线浏览,相中房源后可以和客户直接在线交谈或约下线下交流。通过互联网技术手段,让房客实现在线租房功能,并可以通过本网站更方便的浏览更多的房源信息,而且不受空间和地域的限制,这无疑很大程度上解决了上文提到的问题。
本论文首先分析在线租房系统开发所需的相关技术,并根据市场调研分析了系统开发的业务需求,在需求分析的基本上通过JavaWeb技术来实现该在线租房系统。
下面展示部分系统功能截图:
前端展示:
租房常识
房源信息
房源搜索
搜索结果
在线留言
前端用户注册和登陆
前端用户中心
管理员登陆后操作管理后台功能展示
系统用户管理
租房常识管理
房源信息管理
注册会员管理
交易信息管理
在线留言管理
合同租金管理
通过本项目的上线运行,可以对传统的门店中介的模式进行相应的改变,当然这不一定完全是一种颠覆性的改革,完全可以很好的进行融合。把线下的门店做为一个服务中心来运行,主要负责线上信息的发布和审核,房东发布房源就不用像原来到中介门店来发布房源。同样租客也不用像原来的传统方式由中介带人看房,直接进入在线租房系统搜索查看房源就可以。这即方便的了房东,又方便了租客,节约了交通成本和看房成本。直接通过线上签约和租金的支付,即方便数据管理,又能够提高业务运行效率,实现多签单,增加业务量。所以说本项目的上线实施,将对传统的房屋租赁模式带来很大的改变。
部分实现代码:
package com.action;
/**
* 管理员登陆 增加 修改 删除 删除登陆日志
*/
import java.io.IOException;
import java.util.List;
import java.util.StringTokenizer;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.bean.AdminBean;
import com.bean.SystemBean;
import com.util.Constant;
import com.util.MD5;public class AdminAction extends HttpServlet {
/**
* Constructor of the object.
*/
public AdminAction() {
super();
}/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {doPost(request,response);
}/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {response.setContentType(Constant.CONTENTTYPE);
request.setCharacterEncoding(Constant.CHARACTERENCODING);
try{
String method=request.getParameter("method").trim();
AdminBean loginbean = new AdminBean();
HttpSession session = request.getSession();
session.setMaxInactiveInterval(1200);
SystemBean systembean = new SystemBean();
String sysdir = systembean.getDir();
if(method.equals("one")){//admin登录
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username == null||username.trim().equals("")){
request.setAttribute("message", "请正确输入用户名!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
}
else if(password == null||password.trim().equals("")){
request.setAttribute("message", "请输入密码!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
}
else{
String md5password = MD5.MD5(password);
String agent = request.getHeader("user-agent");
StringTokenizer st = new StringTokenizer(agent,";");
String useros=st.nextToken();
String loginip = request.getRemoteAddr();
int flag = loginbean.adminLogin(username,md5password, password,useros,loginip);
switch (flag){
case Constant.SUCCESS:
List list = loginbean.getAdminInfo(username);
session.setAttribute("user", username);
session.setAttribute("list", list);
request.getRequestDispatcher(sysdir+"/").forward(request, response);
break;
case Constant.NAME_ERROR:
request.setAttribute("message", "用户名错误!请确认管理权限!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
break;
case Constant.PASSWORD_ERROR:
request.setAttribute("message", "密码错误,请确认管理权限!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
break;
}
}
}
else if(method.equals("editpwd")){//admin edit password
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String oldpwd = MD5.MD5(request.getParameter("oldpwd").trim());
String newpwd = MD5.MD5(request.getParameter("newpwd").trim());
String username = (String)session.getAttribute("user");
int flag = loginbean.editPassword(username, oldpwd, newpwd);
switch (flag){
case Constant.SUCCESS:
request.setAttribute("message", "密码修改成功!");
request.getRequestDispatcher(sysdir+"/system/editpwd.jsp").forward(request, response);
break;
case Constant.PASSWORD_ERROR:
request.setAttribute("message", "原始密码错误,请确认权限!");
request.getRequestDispatcher(sysdir+"/system/editpwd.jsp").forward(request, response);
break;
case Constant.SYSTEM_ERROR:
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/editpwd.jsp").forward(request, response);
break;
}
}
}
else if(method.equals("exit")){//admin exit
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
session.removeAttribute("user");
session.removeAttribute("list");
System.gc();
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
else if(method.equals("manager")){//add,update manager
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String username = request.getParameter("username").trim();
String password = MD5.MD5(request.getParameter("password").trim());
int flag = loginbean.addManager(username, password, "2", "1");
if(flag == Constant.SUCCESS){
request.setAttribute("message", "增加管理员成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else if(flag == Constant.SAME_NAME){
request.setAttribute("username", username);
request.setAttribute("message", "该用户名已经存在!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
}
}
else if(method.equals("delm")){//delete manager
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
int id = Integer.parseInt(request.getParameter("id").trim());
if(id == 1){
request.setAttribute("message", "不能删除原始帐号!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
int flag = loginbean.delManager(id);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "删除成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
}
}
}
else if(method.equals("dellog")){//delete login note
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String check[] = request.getParameterValues("checkit");
if(check == null){
request.setAttribute("message", "请选择要删除的记录!");
request.getRequestDispatcher(sysdir+"/system/log.jsp").forward(request, response);
}
else{
int id[]= new int[check.length];
for(int i = 0;i<check.length;i++){
int s = Integer.parseInt(check[i]);
id[i] = s;
}
int flag = loginbean.delLog(id);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "删除记录成功!");
request.getRequestDispatcher(sysdir+"/system/log.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/log.jsp").forward(request, response);
}
}
}
}
else{//无参数传入转到错误页面
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}catch(Exception e){
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}}
package com.action;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.bean.ComBean;
import com.util.Constant;public class ComAction extends HttpServlet {
/**
* Constructor of the object.
*/
public ComAction() {
super();
}/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {doPost(request,response);
}/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {response.setContentType(Constant.CONTENTTYPE);
request.setCharacterEncoding(Constant.CHARACTERENCODING);
HttpSession session = request.getSession();
ComBean cBean = new ComBean();
String date2=new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
String method = request.getParameter("method");
if(method.equals("wyzf")){ //add
String fyid = request.getParameter("fyid");
String ksj = request.getParameter("ksj");
String esj = request.getParameter("esj");
String xm = request.getParameter("xm");
String lx = request.getParameter("lx");
String member=(String)session.getAttribute("member");
if(member==null){
request.setAttribute("message", "请先登录!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
else{
String sql="insert into zf(fyid,ksj,esj,xm,lx,member) " +
"values('"+fyid+"','"+ksj+"','"+esj+"','"+xm+"','"+lx+"','"+member+"')";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("nhzp.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("nhzp.jsp").forward(request, response);
}
}
}
else if(method.equals("delzf")){ ///update
String id = request.getParameter("id");
String sql="delete from zf where id='"+id+"'";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("member/zf/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("member/zf/index.jsp").forward(request, response);
}
}
else if(method.equals("delzf2")){ ///update
String id = request.getParameter("id");
String sql="delete from zf where id='"+id+"'";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("admin/zf/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("admin/zf/index.jsp").forward(request, response);
}
}
else if(method.equals("shzf")){ ///update
String id = request.getParameter("id");
String fyid=cBean.getString("select fyid from zf where id='"+id+"'");
String sql="update zf set zt='已审核' where id='"+id+"'";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
cBean.comUp("update fy set zt='已租出' where id='"+fyid+"'");
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("admin/zf/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("admin/zf/index.jsp").forward(request, response);
}
}
else if(method.equals("xz")){ //del
String id = request.getParameter("id");
String xz = request.getParameter("xz");
int flag = cBean.comUp("update zf set xz='"+xz+"' where id='"+id+"'");
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("member/zf/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("member/zf/index.jsp").forward(request, response);
}
}
else if(method.equals("delfy")){ //del
String id = request.getParameter("id");
int flag = cBean.comUp("delete from fy where id='"+id+"'");
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("admin/fy/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("admin/fy/index.jsp").forward(request, response);
}
}
else if(method.equals("addht")){
//String xmid="";String xm="";String xb=""; String nl=""; String lx=""; String sm="";
String xmid=request.getParameter("xmid");
String xm=request.getParameter("xm");
String xb=request.getParameter("xb");
String nl=request.getParameter("nl");
String lx=request.getParameter("lx");
String sm=request.getParameter("sm");
String sql="insert into ht(xmid,xm,xb,nl,lx,sm) values('"+xmid+"','"+xm+"','"+xb+"', '"+nl+"', '"+lx+"', '"+sm+"' )";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("admin/ht/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("admin/ht/index.jsp").forward(request, response);
}
}
else if(method.equals("upht")){
String id=request.getParameter("id");
String xmid=request.getParameter("xmid");
String xm=request.getParameter("xm");
String xb=request.getParameter("xb");
String nl=request.getParameter("nl");
String lx=request.getParameter("lx");
String sm=request.getParameter("sm");
String sql="update ht set xmid='"+xmid+"',xm='"+xm+"',xb='"+xb+"',nl='"+nl+"',lx='"+lx+"',sm='"+sm+"' where id='"+id+"'";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("admin/ht/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("admin/ht/index.jsp").forward(request, response);
}
}
else if(method.equals("delht")){
String id=request.getParameter("id");
String sql="delete from ht where id='"+id+"' ";
int flag = cBean.comUp(sql);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher("admin/ht/index.jsp").forward(request, response);
}
else {
request.setAttribute("message", "操作失败!");
request.getRequestDispatcher("admin/ht/index.jsp").forward(request, response);
}
}
}/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}}
package com.action;
/**
*
* 留言本
*/import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.bean.GuestBookBean;
import com.bean.SystemBean;
import com.util.Constant;
import com.util.Filter;public class GuestBookAction extends HttpServlet {
/**
* Constructor of the object.
*/
public GuestBookAction() {
super();
}/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(Constant.CHARACTERENCODING);
response.setContentType(Constant.CONTENTTYPE);
//nikename, pic, email, qq, weburl, blogurl, expressions, content
String sysdir = new SystemBean().getDir();
HttpSession session = request.getSession();
String method = request.getParameter("method").trim();
GuestBookBean guestBookBean = new GuestBookBean();
if(method.equals("add")){//发表留言
String member=(String)session.getAttribute("member");
String nikename = Filter.escapeHTMLTags(request.getParameter("nikename").trim());
String face ="images/nobody.gif";
String email = Filter.escapeHTMLTags(request.getParameter("email").trim());
String qq = Filter.escapeHTMLTags(request.getParameter("qq").trim());
String weburl = Filter.escapeHTMLTags(request.getParameter("weburl").trim());
String blogurl = Filter.escapeHTMLTags(request.getParameter("blogurl").trim());
String expressions = "images/face/"+Filter.escapeHTMLTags(request.getParameter("face").trim())+".gif";
String content = Filter.escapeHTMLTags(request.getParameter("content").trim());
String ip = request.getRemoteAddr();
int guestbook=1;
int flag = guestBookBean.addGuestBook(nikename, face, email, qq, weburl, blogurl, expressions, content, ip,guestbook);
if(flag == 1){
request.setAttribute("message", "谢谢您的留言,请等候管理员回复!");
request.getRequestDispatcher("guestbook.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher("guestbook.jsp").forward(request, response);
}
}
else if(method.equals("delguestbook")){//删除留言
try{
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String check[] = request.getParameterValues("checkit");
if(check == null){
request.setAttribute("message", "请选择要删除的记录!");
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
else{
int id[]= new int[check.length];
for(int i = 0;i<check.length;i++){
int s = Integer.parseInt(check[i]);
id[i] = s;
}
int flag = guestBookBean.delGuestBook(id);
if(flag == Constant.SUCCESS){
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
}
}
}catch(Exception e){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
else if(method.equals("replay")){//回复留言
try{
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String messageid = Filter.escapeHTMLTags(request.getParameter("id").trim());
String replay = Filter.escapeHTMLTags(request.getParameter("replay").trim());
int flag = guestBookBean.reGuestBook(Integer.parseInt(messageid), replay, username2);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "回复成功!");
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
}
}catch(Exception e){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
else if(method.equals("upreplay")){
try{
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String messageid = Filter.escapeHTMLTags(request.getParameter("id").trim());
String replay = Filter.escapeHTMLTags(request.getParameter("replay").trim());
int flag = guestBookBean.upReplay(Integer.parseInt(messageid), replay);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "修改成功!");
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/guestbook/index.jsp").forward(request, response);
}
}
}catch(Exception e){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
else{
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}