整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Java Web輕松學54 - 租房網應用完整代碼

          Java Web輕松學54 - 租房網應用完整代碼
          系列文章旨在記錄和總結自己在Java Web開發之路上的知識點、經驗、問題和思考,希望能幫助更多(Java)碼農和想成為(Java)碼農的人。

          目錄

          1. 介紹
          2. 工程結構
          3. POM文件
          4. Web部署描述符 - web.xml
          5. Spring IoC配置元數據 - dispatcher.xml
          6. Java代碼 - 控制器層
          7. Java代碼 - 服務層
          8. Java代碼 - 實體類
          9. 靜態頁面 - login.html
          10. JSP頁面

          介紹

          本篇文章給出截止到上篇文章之時,租房網應用的完整代碼。

          工程結構

          POM文件

          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
           <modelVersion>4.0.0</modelVersion>
           <groupId>house-renter</groupId>
           <artifactId>house-renter</artifactId>
           <version>0.0.1-SNAPSHOT</version>
           <packaging>war</packaging>
           <dependencies>
           <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
          <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>5.2.1.RELEASE</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
          <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>5.2.1.RELEASE</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
          <dependency>
           <groupId>org.apache.taglibs</groupId>
           <artifactId>taglibs-standard-impl</artifactId>
           <version>1.2.5</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-spec -->
          <dependency>
           <groupId>org.apache.taglibs</groupId>
           <artifactId>taglibs-standard-spec</artifactId>
           <version>1.2.5</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
          <dependency>
           <groupId>com.h2database</groupId>
           <artifactId>h2</artifactId>
           <version>1.4.200</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
          <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.2.1.RELEASE</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
          <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid</artifactId>
           <version>1.1.21</version>
          </dependency>
           </dependencies>
           <build>
           <plugins>
           <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.8.0</version>
           <configuration>
           <source>1.8</source>
           <target>1.8</target>
           </configuration>
           </plugin>
           <plugin>
           <artifactId>maven-war-plugin</artifactId>
           <version>3.2.1</version>
           <configuration>
           <warSourceDirectory>WebContent</warSourceDirectory>
           </configuration>
           </plugin>
           </plugins>
           </build>
          </project>

          Web部署描述符 - web.xml

          主要是用來配置 Spring MVC 的 DispatcherServlet 。

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          	xmlns="http://java.sun.com/xml/ns/javaee"
          	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          	id="WebApp_ID" version="3.0">
          	<display-name>house-renter</display-name>
          	<welcome-file-list>
          		<welcome-file>index.html</welcome-file>
          		<welcome-file>index.htm</welcome-file>
          		<welcome-file>index.jsp</welcome-file>
          		<welcome-file>default.html</welcome-file>
          		<welcome-file>default.htm</welcome-file>
          		<welcome-file>default.jsp</welcome-file>
          	</welcome-file-list>
          	<filter>
          		<filter-name>characterEncodingFilter</filter-name>
          		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          		<init-param>
          			<param-name>encoding</param-name>
          			<param-value>UTF-8</param-value>
          		</init-param>
          		<init-param>
          			<param-name>forceEncoding</param-name>
          			<param-value>true</param-value>
          		</init-param>
          	</filter>
          	<filter-mapping>
          		<filter-name>characterEncodingFilter</filter-name>
          		<url-pattern>/*</url-pattern>
          	</filter-mapping>
          	<servlet>
          		<servlet-name>dispatcher</servlet-name>
          		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          		<init-param>
          			<param-name>contextConfigLocation</param-name>
          			<param-value>/WEB-INF/dispatcher.xml</param-value>
          		</init-param>
          		<load-on-startup>1</load-on-startup>
          	</servlet>
          	<servlet-mapping>
          		<servlet-name>dispatcher</servlet-name>
          		<url-pattern>*.action</url-pattern>
          	</servlet-mapping>
          </web-app>

          Spring IoC配置元數據 - dispatcher.xml

          主要用來開啟組件掃描、配置DataSource和JdbcTemplate這兩個Bean。

          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
          	xmlns:context="http://www.springframework.org/schema/context"
          	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          	xsi:schemaLocation="http://www.springframework.org/schema/beans 
          		https://www.springframework.org/schema/beans/spring-beans.xsd 
          		http://www.springframework.org/schema/context
          		https://www.springframework.org/schema/context/spring-context.xsd">
          	
          	<context:component-scan base-package="houserenter"/>
          
          	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
          		<property name="url" value="jdbc:h2:~/h2db/houserenter" />
          		<property name="username" value="sa" />
          		<property name="password" value="" />
          
          		<property name="maxActive" value="20" />
          		<property name="initialSize" value="1" />
          		<property name="maxWait" value="60000" />
          		<property name="minIdle" value="1" />
          	</bean>
          	
          	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
          		<constructor-arg ref="dataSource" />
          	</bean>
          </beans>

          Java代碼 - 控制器層

          package houserenter.controller;
          import java.io.UnsupportedEncodingException;
          
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.stereotype.Controller;
          import org.springframework.web.bind.annotation.GetMapping;
          import org.springframework.web.bind.annotation.PostMapping;
          import org.springframework.web.bind.annotation.ResponseBody;
          import org.springframework.web.servlet.ModelAndView;
          import houserenter.entity.House;
          import houserenter.service.HouseService;
          @Controller
          public class HouseRenterController {
          	
          	@Autowired
          	private HouseService houseService;
          	@GetMapping("/test.action")
          	@ResponseBody
          	public String test() {
          		return "hello";
          	}
          	@PostMapping("/login.action")
          	public ModelAndView postLogin(String userName, String password) {
          		//這里需要驗證用戶是否已經注冊,省略
          		System.out.println("userName: " + userName + ", password: " + password);
          		ModelAndView mv=new ModelAndView();
          		//重定向到查找感興趣房源列表的動作
          		mv.setViewName("redirect:houses.action?userName=" + userName);
          		return mv;
          	}
          	@GetMapping("/houses.action")
          	public ModelAndView getHouses(String userName) {
          		//這里需要驗證用戶是否登錄,省略
          		
          		ModelAndView mv=new ModelAndView();
          		//查找感興趣房源并綁定到相應JSP頁面,然后將請求轉發到該頁面
          		mv.addObject("mockHouses", houseService.findHousesInterested(userName));
          		mv.setViewName("houses.jsp?userName=" + userName);
          		return mv;
          	}
          	@GetMapping("/house-details.action")
          	public ModelAndView getHouseDetails(String userName, String houseId) {
          		// 這里需要驗證用戶是否登錄,省略
          		ModelAndView mv=new ModelAndView();
          		//查找房源詳情并綁定到相應JSP頁面,然后將請求轉發到該頁面
          		mv.addObject("target", houseService.findHouseById(houseId));
          		mv.setViewName("house-details.jsp?userName=" + userName);
          		return mv;
          	}
          	@GetMapping("/house-form.action")
          	public ModelAndView getHouseForm(String userName, String houseId) {
          		// 這里需要驗證用戶是否登錄,省略
          		ModelAndView mv=new ModelAndView();
          		//查找房源詳情并綁定到相應JSP頁面,然后將請求轉發到該頁面
          		mv.addObject("target", houseService.findHouseById(houseId));
          		mv.setViewName("house-form.jsp?userName=" + userName);
          		return mv;
          	}
          	@PostMapping("/house-form.action")
          	public ModelAndView postHouseForm(String userName, House house) throws UnsupportedEncodingException {
          		// 這里需要驗證用戶是否登錄,省略
          		//更新指定房源的詳情
          		houseService.updateHouseById(house);
          		//將請求轉發到查找房源詳情的動作
          		ModelAndView mv=new ModelAndView();
          		mv.setViewName("redirect:house-details.action?userName=" + userName + "&houseId=" + house.getId());
          		return mv;
          	}
          }

          Java代碼 - 服務層

          package houserenter.service;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.util.List;
          
          import javax.annotation.PostConstruct;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.jdbc.core.JdbcTemplate;
          import org.springframework.jdbc.core.RowMapper;
          import org.springframework.stereotype.Service;
          import houserenter.entity.House;
          @Service
          public class HouseService {
          	
          	@Autowired
          	private JdbcTemplate jdbcTemplate;
          	
          	@PostConstruct
          	public void generateMockHouses() {
          		jdbcTemplate.execute("drop table if exists house");
          		jdbcTemplate.execute("create table house(id varchar(20) primary key, name varchar(100), detail varchar(500))");
          		
          		jdbcTemplate.update("insert into house values(?, ?, ?)", "1", "金科嘉苑3-2-1201", "詳細信息");
          		jdbcTemplate.update("insert into house values(?, ?, ?)", "2", "萬科橙9-1-501", "詳細信息");
          	}
          	
          	public List<House> findHousesInterested(String userName) {
          		// 這里查找該用戶感興趣的房源,省略,改為用模擬數據
          		return jdbcTemplate.query(
          				"select id,name,detail from house", 
          				new HouseMapper());
          	}
          	public House findHouseById(String houseId) {
          		return jdbcTemplate.queryForObject(
          				"select id,name,detail from house where id=?",
          				new Object[]{houseId},
          				new HouseMapper());
          	}
          	public void updateHouseById(House house) {
          		jdbcTemplate.update(
          				"update house set id=?, name=?, detail=? where id=?",
          				house.getId(), house.getName(), house.getDetail(), house.getId());
          	}
          	
          	private static final class HouseMapper implements RowMapper<House> {
          
          		@Override
          		public House mapRow(ResultSet rs, int rowNum) throws SQLException {
          			return new House(rs.getString("id"), rs.getString("name"), rs.getString("detail"));
          		}
          		
          	}
          }

          Java代碼 - 實體類

          package houserenter.entity;
          
          public class House {
          
          	private String id;
          	private String name;
          	private String detail;
          	public House(String id, String name, String detail) {
          		super();
          		this.id=id;
          		this.name=name;
          		this.detail=detail;
          	}
          	public String getId() {
          		return id;
          	}
          	public void setId(String id) {
          		this.id=id;
          	}
          	public String getName() {
          		return name;
          	}
          	public void setName(String name) {
          		this.name=name;
          	}
          	public String getDetail() {
          		return detail;
          	}
          	public void setDetail(String detail) {
          		this.detail=detail;
          	}
          	@Override
          	public String toString() {
          		return "House [id=" + id + ", name=" + name + ", detail=" + detail + "]";
          	}
          }
          

          靜態頁面 - login.html

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title>租房網 - 登錄?</title>
          </head>
          <body>
          	<form action="login.action" method="post">
          		<label for="user_name">用戶名</label><input type="text" id="user_name" name="userName" />
          		<label for="password">密碼</label><input type="password" id="password" name="password" />
          		<input type="submit" value="登錄?" />
          	</form>
          </body>
          </html>

          JSP頁面

          include.jsp:

          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          <%@ page import="java.util.List" %>
          <%@ page import="houserenter.entity.House" %>
          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title>租房網</title>
          </head>
          <body>
          <h1>你好,${param.userName}!歡迎來到租房網! <a href="login.html">退出</a></h1>
          <br><br>

          houses.jsp:

          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          <%@ include file="include.jsp"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
          <h6>共找到你感興趣的房源 ${mockHouses.size()} 條</h6>
          <ul>
          <c:forEach var="house" items="${mockHouses}">
          	<li><h2><a href="house-details.action?userName=${param.userName}&houseId=${house.id}">${house.name}</a></h2></li>
          </c:forEach>
          </ul>
          </body>
          </html>

          house-details.jsp:

          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          <%@ include file="include.jsp"%>
          <h2>${target.name}<a href="house-form.action?userName=${param.userName}&houseId=${target.id}">編輯</a></h2>
          <h3>${target.detail}</h3>
          <h4><a href="houses.action?userName=${param.userName}">回到列表</a></h4>
          </body>
          </html>

          house-form.jsp:








          數據信息資料采集:網站租房信息數據資料爬取二手房網頁爬蟲


          -------------


          數據采集滿足多種業務場景:適合產品、運營、銷售、數據分析、政府機關、電商從業者、學術研究等多種身份職業。


          輿情監控:全方位監測公開信息,搶先獲取輿論趨勢。


          市場分析:獲取用戶真實行為數據,全面把握顧客真實需求。


          產品研發:強力支撐用戶調研,準確獲取用戶反饋和偏好。


          風險預測:高效信息采集和數據清洗,及時應對系統風險。


          助您在數據中快速挖掘新客戶;透視競爭對手的業務數據,分析客戶行為拓展新業務,精準營銷降低風險和預算。


          對大量消費者提供產品或服務的企業可以利用大數據進行精準營銷;


          做小而美模式的中小微企業可以利用大數據做服務轉型;


          面臨互聯網壓力之下必須轉型的傳統企業需要與時俱進充分利用大數據的價值。


          ------------


          全網統一自媒體號:大數據信息資料采集


          歡迎關注。

          -----------------------------

          以下文字可忽略


          確定需求-尋找房源信息-聯系房東(或委托房屋中介)-看房-定房-簽合同


          租房正規過程


          1、雙方簽訂租賃合同.


          2、房主查看房客身份證,(可向公安局確認身份證).并索取復印件做為合同附件.


          3、房客查看房主產權證明(可向當地房地產交易所進行確認),房主身份證(可向公安局確認身份證.)及兩證的統一(即產權證的產權人與身份證相同).


          4、合同簽字(房主方)與產權證的產權人相同.如不相同需有產權人的代理委托書.


          5、辦理合租合同時,需有房主方的同意出租(或同意轉租)證明.


          6、定房的時候如果房主要求支付定金,也需要請查看以上證件,一般定金不要超過租房合同總金額的20% .

          發布版本:房軟企業版5.01.30版

          ▍系統版本:企業版

          ▍發布時間:2023年01月30日(周一)

          ▍更新時間:22:00開始維護

          ▍PC前臺網頁:

          二手房

          【優化】列表-界面美化

          【新增】列表-降價房源最新10條

          【優化】詳情-界面美化

          【新增】詳情-顯示房源漲跌價格

          【新增】詳情-預約帶看

          成交房源

          【新增】新增成交列表,詳細成交價格,需要登錄

          【新增】新增成交詳情,詳細成交價格,需要登錄

          新房

          【優化】列表-界面美化

          【新增】詳情-預約帶看

          租房

          【優化】列表-界面美化

          【優化】詳情-界面美化

          【新增】詳情-預約帶看

          商業辦公

          【優化】界面美化

          【新增】新增廠房列表

          小區

          【優化】列表-界面美化

          【優化】詳情-界面美化

          經紀人

          【優化】列表-界面美化

          門店

          【優化】列表-界面美化

          百科

          【優化】列表-界面美化

          問答

          【優化】列表-界面美化

          ?▍圖片參考:


          主站蜘蛛池模板: 国产伦一区二区三区免费| 国产免费私拍一区二区三区| 男人免费视频一区二区在线观看| 无码一区二区三区AV免费| 在线不卡一区二区三区日韩| 中文字幕一区二区三区在线观看 | 亚洲av乱码一区二区三区按摩 | 精品一区二区三区AV天堂| 水蜜桃av无码一区二区| 国产精品分类视频分类一区| 成人免费av一区二区三区| 亚洲一区二区三区首页 | 国产SUV精品一区二区88L| 熟女少妇精品一区二区| 美女毛片一区二区三区四区| 国产在线乱子伦一区二区| 久久伊人精品一区二区三区 | 3d动漫精品啪啪一区二区免费| 亚洲国产成人久久综合一区77| 国产午夜一区二区在线观看| 日本精品啪啪一区二区三区| 国产免费私拍一区二区三区| 在线观看国产一区亚洲bd| 麻豆精品人妻一区二区三区蜜桃| 国产综合精品一区二区| jazzjazz国产精品一区二区| 国产精品无圣光一区二区| 国产品无码一区二区三区在线| 亚洲日本中文字幕一区二区三区| 成人区精品一区二区不卡| 亚洲乱码一区二区三区国产精品 | 99久久精品国产高清一区二区 | 国产亚洲3p无码一区二区| 国产在线观看一区精品 | 亚州日本乱码一区二区三区| 日本韩国黄色一区二区三区| 国产高清在线精品一区二区三区| 无码av中文一区二区三区桃花岛| 亚洲av无码一区二区三区四区| 少妇无码一区二区三区免费| 精品一区二区三区免费毛片爱|