基于springmvc+tomcat+mysql的房屋租赁系统

本项目实现功能:

    1、租客登录或注册该房屋租赁系统

    2、登陆后可以查询房源信息、发布房源信息、修改房源信息、删除房源信息。

项目源码地址

https://download.csdn.net/download/m0_51152186/85262625

项目用例图 

一、eclipse中建立以下目录的web工程,配置tomcat。

 二、建立数据库连接类,连接本地MySQL8.0.

数据库设计如下 : 

数据库语句(在Mysql中复制粘贴即可导入项目数据) :

/*
Navicat MySQL Data Transfer

Source Server         : local
Source Server Version : 50519
Source Host           : localhost:3306
Source Database       : house

Target Server Type    : MYSQL
Target Server Version : 50519
File Encoding         : 65001

Date: 2017-11-29 23:04:30
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for district
-- ----------------------------
DROP TABLE IF EXISTS `district`;
CREATE TABLE `district` (
  `district_name` varchar(50) DEFAULT NULL,
  `district_id` int(11) NOT NULL,
  PRIMARY KEY (`district_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of district
-- ----------------------------
INSERT INTO `district` VALUES ('清河区', '1');
INSERT INTO `district` VALUES ('清浦区', '2');
INSERT INTO `district` VALUES ('开发区', '3');
INSERT INTO `district` VALUES ('淮阴区', '4');

-- ----------------------------
-- Table structure for houseinfo
-- ----------------------------
DROP TABLE IF EXISTS `houseinfo`;
CREATE TABLE `houseinfo` (
  `user_id` int(11) NOT NULL,
  `district_id` int(11) DEFAULT NULL,
  `street_id` int(11) DEFAULT NULL,
  `room` int(11) DEFAULT NULL,
  `hall` int(11) DEFAULT NULL,
  `remark` varchar(1000) DEFAULT NULL,
  `price` decimal(10,0) DEFAULT NULL,
  `title` varchar(70) DEFAULT NULL,
  `date` datetime DEFAULT NULL,
  `telephone` varchar(50) DEFAULT NULL,
  `contract_man` varchar(50) DEFAULT NULL,
  `area` decimal(10,0) DEFAULT NULL,
  `floor` int(11) DEFAULT NULL,
  `owner_name` char(50) DEFAULT NULL,
  `owner_type` char(50) DEFAULT NULL,
  `house_type` varchar(50) DEFAULT NULL,
  `house_age` int(11) DEFAULT NULL,
  `house_id` int(11) NOT NULL,
  PRIMARY KEY (`house_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of houseinfo
-- ----------------------------
INSERT INTO `houseinfo` VALUES ('2', '3', '1', '4', '4', null, '50', '月季花园2', '2010-01-09 00:00:00', '13851678899', 'wzbping', '300', '5', '老王', null, null, null, '10');
INSERT INTO `houseinfo` VALUES ('1', '2', '4', '6', '6', null, '60', '白鹭花园', '2017-10-10 17:55:01', '051788888888', 'zs', '100', '3', '老张', null, null, null, '13');
INSERT INTO `houseinfo` VALUES ('3', '3', '2', '3', '2', null, '70', '上海花园', '2017-11-29 22:08:48', '12344566666', 'lsklhjjb', '128', '7', 'jhhb', null, null, null, '15');
INSERT INTO `houseinfo` VALUES ('2', '3', '1', '4', '4', null, '50', '月季花园3', '2010-01-09 00:00:00', '13851678899', 'wzbping', '300', '5', '老王', null, null, null, '20');
INSERT INTO `houseinfo` VALUES ('2', '3', '1', '4', '4', null, '50', '月季花园5', '2010-01-09 00:00:00', '13851678899', 'wzbping', '300', '5', '老王', null, null, null, '21');
INSERT INTO `houseinfo` VALUES ('2', '3', '1', '4', '4', null, '50', '月季花园4', '2010-01-09 00:00:00', '13851678899', 'wzbping', '300', '5', '老王', null, null, null, '22');

-- ----------------------------
-- Table structure for street
-- ----------------------------
DROP TABLE IF EXISTS `street`;
CREATE TABLE `street` (
  `street_name` varchar(50) DEFAULT NULL,
  `district_id` int(11) NOT NULL,
  `street_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`street_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of street
-- ----------------------------
INSERT INTO `street` VALUES ('延安路', '2', '7');
INSERT INTO `street` VALUES ('上海路', '1', '8');
INSERT INTO `street` VALUES ('1111', '4', '9');
INSERT INTO `street` VALUES ('222', '4', '10');
INSERT INTO `street` VALUES ('222', '4', '11');
INSERT INTO `street` VALUES ('222', '4', '12');
INSERT INTO `street` VALUES ('黄河路', '4', '14');
INSERT INTO `street` VALUES ('黄河路', '4', '15');
INSERT INTO `street` VALUES ('天津路', '4', '16');
INSERT INTO `street` VALUES ('天津路', '4', '17');

-- ----------------------------
-- Table structure for userinfo
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `username` varchar(50) DEFAULT NULL,
  `userpass` varchar(50) DEFAULT NULL,
  `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES ('2', '2', '2');
INSERT INTO `userinfo` VALUES ('3', '3', '3');
INSERT INTO `userinfo` VALUES ('5', '5', '4');
INSERT INTO `userinfo` VALUES ('4', '4', '5');
INSERT INTO `userinfo` VALUES ('1', '1', '6');
INSERT INTO `userinfo` VALUES ('w', 'w', '8');
INSERT INTO `userinfo` VALUES ('wy', 'wy', '9');
 

DBConnect.java

//package common;

import java.sql.*;

public class DBConnect {
	
    private Connection conn = null;
    private Statement  stmt  = null;
    private ResultSet  rs    = null;
	private PreparedStatement ps = null;

    public DBConnect()
    {
        try
        {	
        	//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=zf", "root", "123456");
        	Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/house?&useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf-8&autoReconnect=true", "root", "123456");
  
        	stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        }
        catch (SQLException ex)
        {
            System.out.println(ex.getMessage() + "路径错误");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println(ex.getMessage() + "驱动错误");
        }
    }

    
    public PreparedStatement getPs(String sql) throws SQLException {
		try {
			ps = conn.prepareStatement(sql);
			conn.commit();
			return ps;
		} catch (Exception e) {
			//conn.rollback();
			e.printStackTrace();
			return ps;
		}
	}
    public ResultSet executeQuery(String ssql) throws SQLException{
       try{
           rs = stmt.executeQuery(ssql);
           return rs;

       }
       catch(SQLException se){
           //conn.rollback();
           System.out.println("DBBean.executeQuery() ERROR:"+se.getMessage());
       }
       return rs;
   }
    //------added by me
    public void printResult(ResultSet rs) throws SQLException{
    	int col = rs.getMetaData().getColumnCount();
        System.out.println("============================");
        while (rs.next()) {
            for (int i = 1; i <= col; i++) {
                System.out.print(rs.getString(i) + "\t");
                if ((i == 2) && (rs.getString(i).length() < 8)) {
                    System.out.print("\t");
                }
             }
            System.out.println("");
        }
            System.out.println("============================");
    }
    //---
   public int executeUpdate(String ssql) throws SQLException{
        int iupdate = 0;
        try{
            iupdate = stmt.executeUpdate(ssql);
            return iupdate;
        }
        catch(SQLException se){
            //conn.rollback();
            System.out.println("DBBean.executeUpdate() ERROR:"+se.getMessage());
        }
        return iupdate;
   }
   public void free() throws SQLException{
       try{
           if(rs   != null) rs.close();
           if(stmt != null) stmt.close();
           if(conn != null) conn.close();
       }
       catch(SQLException se){
           System.out.println("DBBean.free() ERROR:"+se.getMessage());
       }
   }


	public Connection getConnection() {
		return conn;
	}
	
	
	public static void main(String[] args) throws SQLException {
	    DBConnect db=new DBConnect();
	    String sql="insert into house(id,room,address) values(9,'213','深圳路')";
	    //System.out.println(sql);
	    int i=db.executeUpdate(sql);
	
	    if(i==1)
	        {System.out.println("测试成功!\n");
	        
	        db.printResult(db.executeQuery("select * from house"));//added by me
	    	
	    }
	    else
	        {System.out.println("测试失败!");}
	}

}

三、SpringMVC其实就一种基于Servlet的MVC模型:

1、模型:一个或多个javabean对象,用于存储数据和业务逻辑。

 checkInfo.java

package beans;

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

import common.DBConnect;

public class checkInfo {
	
	DBConnect db = new DBConnect();
	ResultSet rs;
	ArrayList result = new ArrayList();
	
	String qxid;
	String jdid;
	String low;
	String high;
	String housetype;
	String room;
	String hall;
	public List getInfo(CheckInfoBean info){
		
		DBConnect db = new DBConnect();
		qxid = info.getQxid();
		jdid=info.getJdid();
		low = info.getLow();
		high = info.getHigh();
		housetype = info.getHousetype();
		room = info.getRoom();
		hall = info.getHall();
		
		//查询条件组合
		String sql = "select * from houseinfo where 1=1";
		if(qxid!=null&&!qxid.equals("0")){
			sql = sql + " and district_id =" + qxid;
		}
		if(jdid!=null&&!jdid.equals("0")){
			sql = sql + " and street_id =" + jdid;
		}
		if(low!=null&&!low.equals("0")){
			sql = sql + " and price >" + low;
		}
		if(high!=null&&!high.equals("0")){
			sql = sql + " and price <=" + high;
		}
		if(housetype!=null&&!housetype.equals("0")){
			sql = sql + " and house_type ='" + housetype+"'";
		}
		if(room!=null&&!room.equals("0")){
			sql = sql + " and room =" + room;
		}
		if(hall!=null&&!hall.equals("0")){
			sql = sql + " and hall =" + hall;
		}
		System.out.println(sql);
		
		
		//查询数据
		try {
			rs = db.executeQuery(sql);
			
			while(rs.next()){
				CheckInfoBean cb = new CheckInfoBean();
				cb.setTitle(rs.getString("title"));
				cb.setOwnername(rs.getString("owner_name"));
				cb.setHouseid(rs.getString("house_id"));
				cb.setRoom(rs.getString("room"));
				cb.setHall(rs.getString("hall"));
				cb.setDate(rs.getString("date"));
				cb.setPrice(rs.getString("price"));
				cb.setArea(rs.getString("area"));
				//将Javabean数据对象存入到result对象中
				result.add(cb);
				}
		} catch (SQLException e) {
			System.out.println("CheckInfo.java"+e);
		}
		return result;
	}
}

CheckInfoBean.java

package beans;

public class CheckInfoBean {
	    //鏀堕泦鏌ヨ鏉′欢
		private String qxid;
	    private String jdid;
	    private String low;
		private String high;
	    private String housetype;
	    private String room;
	    private String hall;
	    
	    //鏄剧ず鏌ヨ缁撴灉娑夊強鐨勫睘鎬�
	    private String title;
	    private String ownername;
	    private String houseid; 
	    private String date;
	    private String price;
	    private String area;
	    
	    public String getQxid() {
			return qxid;
		}
		public void setQxid(String qxid) {
			this.qxid = qxid;
		}
		public String getJdid() {
			return jdid;
		}
		public void setJdid(String jdid) {
			this.jdid = jdid;
		}
		public String getLow() {
			return low;
		}
		public void setLow(String low) {
			this.low = low;
		}
		public String getHigh() {
			return high;
		}
		public void setHigh(String high) {
			this.high = high;
		}
		public String getHousetype() {
			return housetype;
		}
		public void setHousetype(String housetype) {
			this.housetype = housetype;
		}
		public String getRoom() {
			return room;
		}
		public void setRoom(String room) {
			this.room = room;
		}
		public String getHall() {
			return hall;
		}
		public void setHall(String hall) {
			this.hall = hall;
		}
		public String getTitle() {
			return title;
		}
		public void setTitle(String title) {
			this.title = title;
		}
		public String getOwnername() {
			return ownername;
		}
		public void setOwnername(String ownername) {
			this.ownername = ownername;
		}
		public String getHouseid() {
			return houseid;
		}
		public void setHouseid(String houseid) {
			this.houseid = houseid;
		}
		public String getDate() {
			return date;
		}
		public void setDate(String date) {
			this.date = date;
		}
		public String getPrice() {
			return price;
		}
		public void setPrice(String price) {
			this.price = price;
		}
		public String getArea() {
			return area;
		}
		public void setArea(String area) {
			this.area = area;
		}

	public CheckInfoBean() {
		// TODO Auto-generated constructor stub
	}

}

2、控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给业务逻辑的javabean,并将处理记过存放到实体模型javabean中,输出给视图显示。 

houseInfo.java

package beans;

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

import common.DBConnect;

public class houseInfo {
	DBConnect db = new DBConnect();
	ResultSet rs;
	ArrayList result = new ArrayList();
	
	//根据userid查询数据显示在列表中
	public List getInfo(String sql){
		
		DBConnect db = new DBConnect();
		
		System.out.println(sql);
		
		//查询数据
		try {
			rs = db.executeQuery(sql);
			
			while(rs.next()){
				HouseInfoBean cb = new HouseInfoBean();
				cb.setHouse_id(rs.getString("house_id"));
				cb.setTitle(rs.getString("title"));
				cb.setPrice(rs.getString("price"));
				cb.setDate(rs.getString("date"));
				//将Javabean数据对象存入到result对象中
				result.add(cb);
				}
		} catch (SQLException e) {
			System.out.println("houseInfo.java"+e);
		}
		return result;
	}
	
	//根据houseid查询某一条记录
	public List getAllInfo(String sql){
		
		DBConnect db = new DBConnect();
		
		System.out.println(sql);
		
		//查询数据
		try {
			rs = db.executeQuery(sql);
			
			while(rs.next()){
				HouseInfoBean cb = new HouseInfoBean();
				cb.setTitle(rs.getString("title"));
				cb.setDistrict_id(rs.getString("district_id"));
				cb.setStreet_id(rs.getString("street_id"));
				cb.setHall(rs.getString("hall"));
				cb.setRoom(rs.getString("room"));
				cb.setFloor(rs.getString("floor"));
				cb.setArea(rs.getString("area"));
				cb.setHouse_age(rs.getString("house_age"));
				cb.setOwner_name(rs.getString("owner_name"));
				cb.setOwner_type(rs.getString("owner_type"));
				cb.setPrice(rs.getString("price"));
				cb.setHouse_type(rs.getString("house_type"));
				cb.setTelephone(rs.getString("telephone"));
				cb.setContract_man(rs.getString("contract_man"));
				cb.setRemark(rs.getString("remark"));
				//将Javabean数据对象存入到result对象中
				result.add(cb);
				}
		} catch (SQLException e) {
			System.out.println("houseInfo.java"+e);
		}
		return result;
	}
	
	//修改信息	
public int modInfo(String sql){
			
			DBConnect db = new DBConnect();
			
			System.out.println(sql);
			
			int i = db.executeUpdate(sql);
				
			return i;
		}

//增加信息	
public int insertInfo(String sql){
			
			DBConnect db = new DBConnect();
			
			System.out.println(sql);
			
			int i = db.executeUpdate(sql);
				
			return i;
		}

	
//删除信息	
public int delInfo(String houseid){
		
		DBConnect db = new DBConnect();
		String sql="delete from houseinfo where house_id = "+houseid;
		
			int i = db.executeUpdate(sql);
			
		    return i;
	}
}

HouseInfoBean.java

package beans;

public class HouseInfoBean {
	//根据houseinfo表的属性列确定成员变量
	private String house_id;
	private String user_id;
	private String district_id;
	private String street_id;
	
	private String hall;
	private String room;
	private String date;
	private String title;
	private String price;
	private String telephone;
	private String area;
	private String floor;
	private String owner_name;
	private String owner_type;
	private String house_age;
	private String house_type;
	private String contract_man;
	private String remark;
	
	public String getHouse_type() {
		return house_type;
	}
	public void setHouse_type(String house_type) {
		this.house_type = house_type;
	}
	public String getHouse_id() {
		return house_id;
	}
	public void setHouse_id(String house_id) {
		this.house_id = house_id;
	}
	public String getUser_id() {
		return user_id;
	}
	public void setUser_id(String user_id) {
		this.user_id = user_id;
	}
	public String getDistrict_id() {
		return district_id;
	}
	public void setDistrict_id(String district_id) {
		this.district_id = district_id;
	}
	public String getStreet_id() {
		return street_id;
	}
	public void setStreet_id(String street_id) {
		this.street_id = street_id;
	}
	public String getHall() {
		return hall;
	}
	public void setHall(String hall) {
		this.hall = hall;
	}
	public String getRoom() {
		return room;
	}
	public void setRoom(String room) {
		this.room = room;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public String getTelephone() {
		return telephone;
	}
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}
	public String getArea() {
		return area;
	}
	public void setArea(String area) {
		this.area = area;
	}
	public String getFloor() {
		return floor;
	}
	public void setFloor(String floor) {
		this.floor = floor;
	}
	public String getOwner_name() {
		return owner_name;
	}
	public void setOwner_name(String owner_name) {
		this.owner_name = owner_name;
	}
	public String getOwner_type() {
		return owner_type;
	}
	public void setOwner_type(String owner_type) {
		this.owner_type = owner_type;
	}
	public String getHouse_age() {
		return house_age;
	}
	public void setHouse_age(String house_age) {
		this.house_age = house_age;
	}
	public String getContract_man() {
		return contract_man;
	}
	public void setContract_man(String contract_man) {
		this.contract_man = contract_man;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}

}

视图:一个和多个JSP页面,想控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据。 

 sendinfo.html

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>sendinfo.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <link rel="stylesheet" type="text/css" href="css/style.css">
   <script type="text/javascript">
        function pass(){
                 var pass=false;
                 if(document.form1.title.value==""){
                    alert("标题不能为空!");
                    pass=false;
                 }else if(document.form1.district_id.value=="0"){
                    alert("区县不能为空!");
                    pass=false;
                 }else if(document.form1.street_id.value=="0"){
                    alert("街道不能为空!");
                    pass=false;
                 }else 
                    pass=true;
                    
                    return pass;
        }
	    </script>

  </head>
  
  <body>
  <br>
  <form name="form1" method="post" action="myinfosave.jsp" onsubmit="return pass()">
    <table border="0" width="95%">
      <tr>
        <td colspan="4">发布售房信息:</td>
      </tr>
      <tr>
        <td width="15%" class="td_align">标题:</td>
        <td colspan="3"><input type="text" name="title" style="width:300px"></td>
      </tr>
      <tr>
        <td class="td_align">区县:        </td>
        <td width="35%"><select name="district_id">
          <option value="0">不限--</option>
          <option value="1">清河区</option>
          <option value="2">清浦区</option>
          <option value="3">开发区</option>
          <option value="4">淮阴区</option>
                        </select></td>
        <td width="15%" class="td_align">街道:</td>
        <td width="35%"><select name="street_id">
        <option value="0">不限--</option>
          <option value="7">延安路</option>
          <option value="8">上海路</option>
          <option value="14">黄河路</option>
          <option value="17">天津路</option>
        </select>
        </td>
      </tr>
      <tr>
        <td class="td_align">户型:</td>
        <td><select name="room" style="width:50px" >
         <option value="0">不限--</option>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
        </select>
        室  <select name="hall" style="width:50px">
        <option value="0">不限--</option>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
          </select>
        厅</td>
        <td class="td_align">楼层: </td>
        <td><input type="text" name="floor" style="width:80px"></td>
      </tr>
      <tr>
        <td class="td_align">面积:</td>
        <td><input type="text" name="area" style="width:80px">
          平方米</td>
        <td class="td_align">楼龄:</td>
        <td><input type="text" name="house_age" style="width:80px">
          年</td>
      </tr>
      <tr>
        <td class="td_align">物业名称:        </td>
        <td><input type="text" name="owner_name" style="width:110px"></td>
        <td class="td_align">物业类型:</td>
        <td><select name="owner_type">
        <option value="0">不限--</option>
          <option value="国有">国有</option>
          <option value="民营">民营</option>
          <option value="私有">私有</option>
        </select>
        </td>
      </tr>
      <tr>
        <td class="td_align">售价:</td>
        <td><input type="text" name="price" style="width:70px">
          万元</td>
        <td class="td_align">房屋类型:</td>
        <td><select name="house_type" style="width:80px">
        <option value="0">不限--</option>
		<option value="普通住宅">普通住宅</option>
		<option value="高层">高层</option>
		<option value="别墅">别墅</option>
        </select></td>
      </tr>
      <tr>
        <td class="td_align">联系电话:</td>
        <td><input type="text" name="telephone" style="width:100px"></td>
        <td class="td_align">联系人:</td>
        <td><input type="text" name="contract_man" style="width:100px"></td>
      </tr>
      <tr>
        <td class="td_align">房屋介绍:</td>
        <td colspan="3"><textarea name="remark" style="width:300px"></textarea>
        <input type="submit" name="Submit" value="提交"></td>
      </tr>
    </table>
  </form>
  </body>
</html>
<%@ page language="java" import="java.util.*,beans.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>sendinfo.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <link rel="stylesheet" type="text/css" href="css/style.css">
   <script type="text/javascript">
        function pass(){
                 var pass=false;
                 if(document.form1.title.value==""){
                    alert("标题不能为空!");
                    pass=false;
                 }else if(document.form1.district_id.value=="0"){
                    alert("区县不能为空!");
                    pass=false;
                 }else if(document.form1.street_id.value=="0"){
                    alert("街道不能为空!");
                    pass=false;
                 }else 
                    pass=true;
                    
                    return pass;
        }
	    </script>

  </head>
  
  <body>
  <br>
  <%
  String houseid=request.getParameter("houseid");
  String sql="select * from houseinfo where house_id='"+houseid+"'";
  
  houseInfo h=new houseInfo();
  List r= h.getAllInfo(sql);
  HouseInfoBean info=(HouseInfoBean)r.get(0);
  
  String qxid=info.getDistrict_id();
  String jdid=info.getStreet_id();
   %>
  <form name="form1" method="post" action="myinfoupdate.jsp?houseid=<%=houseid%>" onsubmit="return pass()">
  
  
    <table border="0" width="95%">
      <tr>
        <td colspan="4">修改售房信息:</td>
      </tr>
      <tr>
        <td width="15%" class="td_align">标题:</td>
        <td colspan="3"><input type="text" name="title" style="width:300px" value=<%=info.getTitle() %>></td>
      </tr>
      <tr>
        <td class="td_align">区县:  </td>
        <td width="35%"><select name="district_id">
          <option value="0">不限--</option>
          <option value="1" <%if(qxid.equals("1")){%>selected<%} %>>清河区</option>
          <option value="2" <%if(qxid.equals("2")){%>selected<%} %>>清浦区</option>
          <option value="3" <%if(qxid.equals("3")){%>selected<%} %>>开发区</option>
          <option value="4" <%if(qxid.equals("4")){%>selected<%} %>>淮阴区</option>
                        </select></td>
        <td width="15%" class="td_align">街道:</td>
        <td width="35%"><select name="street_id">
        <option value="0">不限--</option>
          <option value="7" <%if(jdid.equals("7")){%>selected<%} %>>延安路</option>
          <option value="8" <%if(jdid.equals("8")){%>selected<%} %>>上海路</option>
          <option value="14" <%if(jdid.equals("14")){%>selected<%} %>>黄河路</option>
          <option value="17" <%if(jdid.equals("17")){%>selected<%} %>>天津路</option>
        </select>
        </td>
      </tr>
      <tr>
        <td class="td_align">户型:</td>
        <td><select name="room" style="width:50px" >
         <option selected><%=info.getRoom() %></option>
         <option value="0">不限--</option>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
        </select>
        室  <select name="hall" style="width:50px">
        <option selected><%=info.getHall() %></option>
        <option value="0">不限--</option>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
          </select>
        厅</td>
        <td class="td_align">楼层: </td>
        <td><input type="text" name="floor" style="width:80px" value=<%=info.getFloor() %>></td>
      </tr>
      <tr>
        <td class="td_align">面积:</td>
        <td><input type="text" name="area" style="width:80px" value=<%=info.getArea() %>>
          平方米</td>
        <td class="td_align">楼龄:</td>
        <td><input type="text" name="house_age" style="width:80px" value=<%=info.getHouse_age() %>>
          年</td>
      </tr>
      <tr>
        <td class="td_align">物业名称:        </td>
        <td><input type="text" name="owner_name" style="width:110px" value=<%=info.getOwner_name() %>></td>
        <td class="td_align">物业类型:</td>
        <td><select name="owner_type">
         <option selected><%=info.getOwner_type() %></option>
        <option value="0">不限--</option>
          <option value="国有">国有</option>
          <option value="民营">民营</option>
          <option value="私有">私有</option>
        </select>
        </td>
      </tr>
      <tr>
        <td class="td_align">售价:</td>
        <td><input type="text" name="price" style="width:70px" value=<%=info.getPrice() %>>
          万元</td>
        <td class="td_align">房屋类型:</td>
        <td><select name="house_type" style="width:80px">
         <option selected><%=info.getHouse_type() %></option>
        <option value="0">不限--</option>
		<option value="普通住宅">普通住宅</option>
		<option value="高层">高层</option>
		<option value="别墅">别墅</option>
        </select></td>
      </tr>
      <tr>
        <td class="td_align">联系电话:</td>
        <td><input type="text" name="telephone" style="width:100px" value=<%=info.getTelephone() %>></td>
        <td class="td_align">联系人:</td>
        <td><input type="text" name="contract_man" style="width:100px" value=<%=info.getContract_man() %>></td>
      </tr>
      <tr>
        <td class="td_align">房屋介绍:</td>
        <td colspan="3"><textarea name="remark" style="width:300px" ><%=info.getRemark() %></textarea>
        <input type="submit" name="Submit" value="提交"></td>
      </tr>
    </table>
  </form>
  </body>
</html>

 四、用户注册功能的实现 

第一步:在register.html静态页面的基础上创建register.jsp动态页面。

注:

在page指令中的pageEncoding属性设置为UTF-8。确保页面中汉字的保存与正常显示。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

页面中的form表单中的action属性值设为接收处理页面地址“rec_register.jsp”

在left.html页面中的注册用户链接的地址改为"register.jsp"

                   <td align="center">&nbsp; <a href="register.html"

                    target="main">注册用户</a></td>

第二步,创建用于接收用户注册数据的介绍页面rec_register.jsp。

1.接收注册页面register.jsp页面的提交数据

//接收用户输入的数据

    request.setCharacterEncoding("gbk");

    String name=request.getParameter("uname");

    String psw=request.getParameter("upass1");

   

    //输出数据

    System.out.println("注册用户名:"+name+";密码:"+psw);

2.连接数据库,判断用户名是否已经存在

    //连接数据库,判断用户名是否已存在

    String sql="select count(*) from userinfo where username=? and userpass=?";

    DBConnect db=new DBConnect();

    PreparedStatement ps=db.getPS(sql);

    ps.setString(1,name);

    ps.setString(2,psw);

    ResultSet rs=ps.executeQuery();

    int count=0;

    while(rs.next()){

    count=rs.getInt(1);

    }

3.根据数据操作结果,如果用户名已经存在,给出提示信息,如果用户名不存在,将数据插入数据库。

   if(count==1){

    //存在,提示信息

    out.println("<script lang='javascript'>");

    out.println("alert('用户名已存在!');");

    out.println("location='register.jsp'");

    out.println("</script>");

    }

    else{

    //不存在,将数据插入数据库userinfo表中

    String sql1 = "insert into userinfo(username,userpass)values(?,?)";

    ps = db.getPS(sql1);

    ps.setString(1, name);

    ps.setString(2, psw);

    int i=0;

   

    i=ps.executeUpdate();

    if (i == 1) {

    //注册成功

    out.println("<script lang='javascript'>");

    out.println("alert('注册成功!');");

    out.println("location='register.jsp'");

    out.println("</script>");

    } else {

    //注册失败

    out.println("<script lang='javascript'>");

    out.println("alert('注册失败!');");

    out.println("location='register.jsp'");

    out.println("</script>");

    }

   }

 五、分页功能的实现

复杂查询:

select * 

from

  (select *,@curRow := @curRow + 1   as row

   from

    ( select *

      from topic

      where boardid=00000000001

     ) as b   join (select @currow:=0) r) as a

where row between 6 and 10

 六、springmvc项目总结

  1. 客户端发起请求(http)通过web.xml找到 DispatchServlet(前端控制器);
  2. 由DispatchServlet控制器通过配置文件(servletName-servlet.xml)寻找到一个或多个HandlerMapping(映射处理器),找到用于处理请求的controller(后端控制器);
  3. DispatchServlet将请求提交到controller;
  4. Controller处理业务逻辑后,
  5. controller返回数据 ModelAndVIew给DispatchServlet;
  6. DispatchServlet寻找到一个或多个ViewResolver(视图解析器),找到ModelAndVIew指定的视图;
  7. DispatchServle负责将结果返给View(客户端JSP页面),封装Http;
  8. view响应页面的HTTP请求,返回响应数据,浏览器绘制页面。
  1. 第2~3步,里面隐藏了步骤:

DispatchServlet 根据 HandlerMapping(专门映射处理器的一个映射器)的配置(用户自己配置的配置文件)找到Handler(处理器),然后由具体的HandlerAdapter处理器对Handler进行处理。

  1. handler跟controller有啥区别?

controller 是 handler,但是handler不是controller。

handler接管所有的DispatchServlet给与的处理信息,包括静态请求(http://……/style.css),并且可以改变请求所指向的资源参数如 String target参数。

controller只做三件事接收参数、调用业务、使用业务结果渲染页面。

七、运行截图。

 需要项目工程的小伙伴私聊哈~~~

 瑞斯拜~~~

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于Spring MVC和Spring Data的学生管理系统是一个使用这两个框架来开发的学生信息管理系统。 首先,Spring MVC是一个基于MVC架构的Java Web开发框架,它将应用程序的不同层分离,使得代码更易于维护和测试。在学生管理系统,我们可以使用Spring MVC来处理前端的用户请求和页面跳转,同时将业务逻辑和数据访问层分离,提高系统的可扩展性和可重用性。 其次,Spring Data是一个用于简化数据库访问的框架,它提供了统一的CRUD(创建、读取、更新和删除)操作,并支持多种数据访问技术,如JPA、Hibernate和MongoDB等。在学生管理系统,我们可以使用Spring Data来管理学生信息的增删改查操作,简化数据库访问的代码量,提高开发效率。 在学生管理系统,我们可以使用Spring MVC来实现用户的注册、登录和权限控制等功能。同时,我们可以使用Spring Data来实现学生信息的增删改查功能,并提供相应的页面展示和分页查询功能。 此外,基于Spring MVC和Spring Data的学生管理系统还可以使用其他技术来进一步完善。例如,可以使用Thymeleaf模板引擎来实现前端页面的动态渲染;可以使用Spring Security来实现用户权限的控制和安全性的保障;还可以使用Spring Boot快速构建和部署应用程序等。 总的来说,基于Spring MVC和Spring Data的学生管理系统可以大大简化开发流程,提高开发效率,同时提供良好的系统架构和稳定性,有效地管理和展示学生信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无处安放的小曾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值