马上就要开学了,最后完成剩下的部分
Servlet 设计与实现
登录
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 java.io.IOException;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 确定用户角色(管理员、房产经纪、顾客),验证登录信息,根据角色跳转到相应页面
// 示例代码,实际需完善验证逻辑和页面跳转逻辑
if ("admin".equals(username) && "admin123".equals(password)) {
// 管理员登录,跳转到管理员功能页
request.getSession().setAttribute("role", "admin");
response.sendRedirect("admin.jsp");
} else if ("agent".equals(username) && "agent123".equals(password)) {
// 房产经纪登录,跳转到房产经纪功能页,需进一步验证授权等情况
request.getSession().setAttribute("role", "agent");
response.sendRedirect("agent.jsp");
} else if ("customer".equals(username) && "customer123".equals(password)) {
// 顾客登录,跳转到顾客功能页,需验证是否已审核通过
request.getSession().setAttribute("role", "customer");
response.sendRedirect("customer.jsp");
} else {
// 登录失败,返回登录页面并提示错误信息
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
顾客注册
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 java.io.IOException;
@WebServlet("/customer/register")
public class CustomerRegisterServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取顾客注册信息,验证格式(身份证号、手机号码、家庭住址等)
// 示例代码,需完善参数获取和格式验证逻辑,以及错误处理和返回页面逻辑
String idNumber = request.getParameter("id_number");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String phone = request.getParameter("phone");
String address = request.getParameter("address");
if (isValidIdNumber(idNumber) && isValidPhone(phone) && isValidAddress(address)) {
CustomerDAO dao = new CustomerDAO();
Customer customer = new Customer();
customer.setUserId(generateUserId()); // 生成唯一用户 ID,需实现相应方法
customer.setUserName(name);
customer.setSex(sex);
customer.setIdNumber(idNumber);
customer.setPhone(phone);
customer.setUserAddress(address);
dao.addCustomer(customer);
request.setAttribute("message", "注册成功,请等待管理员审核");
} else {
request.setAttribute("message", "注册信息格式错误,请检查后重新注册");
}
request.getRequestDispatcher("customer_register_result.jsp").forward(request, response);
}
private boolean isValidIdNumber(String idNumber) {
// 验证身份证号格式,简单示例,可进一步完善
return idNumber.matches("^\\d{17}[\\dXx]$");
}
private boolean isValidPhone(String phone) {
// 验证手机号码格式,简单示例,可进一步完善
return phone.matches("^\\d{11}$");
}
private boolean isValidAddress(String address) {
// 验证地址格式,简单示例,可进一步完善
return address.matches("^\\S+省\\S+市\\S+区(县)\\S+街道\\S+小区\\S+号楼\\S+单元\\S+门牌$");
}
private String generateUserId() {
// 生成唯一用户 ID,示例代码,可根据实际情况改进
return "C" + System.currentTimeMillis();
}
}
查看个人信息
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 java.io.IOException;
@WebServlet("/customer/viewInfo")
public class CustomerViewInfoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取当前登录顾客的用户 ID(假设从 session 中获取)
String userId = (String) request.getSession().getAttribute("userId");
// 调用 CustomerDAO 查询顾客信息并设置到 request 中,转发到查看信息页面
// 示例代码,实际需完善查询和转发逻辑
request.setAttribute("customer", new CustomerDAO().getCustomerById(userId));
request.getRequestDispatcher("customer_view_info.jsp").forward(request, response);
}
}
修改个人密码
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 java.io.IOException;
@WebServlet("/customer/viewInfo")
public class CustomerViewInfoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取当前登录顾客的用户 ID(假设从 session 中获取)
String userId = (String) request.getSession().getAttribute("userId");
// 调用 CustomerDAO 查询顾客信息并设置到 request 中,转发到查看信息页面
// 示例代码,实际需完善查询和转发逻辑
request.setAttribute("customer", new CustomerDAO().getCustomerById(userId));
request.getRequestDispatcher("customer_view_info.jsp").forward(request, response);
}
}
购买房产
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 java.io.IOException;
@WebServlet("/customer/purchaseHouse")
public class CustomerPurchaseHouseServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取要购买的房产编号,调用 HouseDAO 更新房产状态为“意向”
// 示例代码,需完善参数获取和更新逻辑,以及错误处理和返回页面逻辑
String houseId = request.getParameter("house_id");
HouseDAO dao = new HouseDAO();
House house = dao.getHouseById(houseId);
if (house!= null) {
house.setStatus("意向");
dao.updateHouse(house);
request.setAttribute("message", "购买意向提交成功");
} else {
request.setAttribute("message", "房产不存在,购买失败");
}
request.getRequestDispatcher("customer_purchase_house_result.jsp").forward(request, response);
}
}
页面设计
登陆界面
房产信息管理系统登录
顾客注册界面顾客注册
顾客功能界面在售房产信息
<%-- 从 Servlet 传递过来的房产信息列表(houses)中循环遍历显示房产信息 --%> <% for (House house : (List序号 | 地址 | 销售报价 | 操作 |
---|---|---|---|
<%= house.getHouseId() %> | <%= house.getAddress() %> | <%= house.getSales() %> | 查看详情 |
授权房产信息
<%-- 从 Servlet 传递过来的房产信息列表(houses)中循环遍历显示房产信息 --%> <% for (House house : (List序号 | 地址 | 销售报价 | 操作 |
---|---|---|---|
<%= house.getHouseId() %> | <%= house.getAddress() %> | <%= house.getSales() %> | 查看详情 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术