共计 10399 个字符,预计需要花费 26 分钟才能阅读完成。
博主介绍:✌退职 Java 研发工程师、专一于程序设计、源码分享、技术交换、专一于 Java 技术畛域和毕业设计✌
[项目名称
基于 Javaweb 的汽车租赁零碎 + 文档
下载地址
基于 Javaweb 的汽车租赁零碎 + 文档 ](https://ym.maptoface.com/archives/58584)
视频演示
基于 Javaweb 的汽车租赁零碎_哔哩哔哩_bilibili
零碎介绍
摘要:随着社会经济的疾速倒退,汽车曾经成为人们出行的次要工具。为满足不同消费者的需要,汽车租赁行业应运而生,获得迅速的倒退。传统的汽车租赁公司不仅店铺少、操作麻烦,也难以推动该行业的倒退。本零碎次要钻研和设计一款基于 Java Web 的汽车租赁零碎,旨在为用户提供一个便捷、高效的汽车租赁服务平台。
本文首先剖析了基于 Java Web 的汽车租赁零碎的开发背景、开发目标和意义以及国内外钻研现状;紧接着介绍了本零碎所应用的的次要技术和框架。其次对本零碎性能需要和非性能需要以及可行性进行了剖析,确定零碎不同角色所领有的权限;接着进行了本零碎的功能模块设计、工作流程设计、数据库设计;而后给出零碎的次要页面展现、零碎测试目标和论断,最初对本零碎的开发做出总结。
本课题开发了一套十分实用的汽车租赁零碎,用户能够通过该零碎进行网上租赁车辆;租赁公司能够进行订单治理、用户治理等操作;通过理论测试和利用,该零碎体现出良好的性能和易用性,不仅节俭了用户和租车公司的工夫,也为汽车租赁行业的倒退做出了微小的奉献。
关键词:汽车租赁管理系统;Spring Boot;Java Web;MySQL
第 3 章 零碎需要剖析
3.1 性能需要剖析
在以后的背景下,人们出行成为社会的极大问题。汽车租赁零碎旨在提供实时、快捷、全方位的信息流传服务,使得车辆信息在出租者和求租者之间更加轻松地流传。
为了更好地形容零碎的性能,能够应用用例图来建模。用例图形容了零碎的角色和其对应的性能。在该零碎中,管理员和用户是两个最为要害的角色。管理员能够进行各种治理操作,如增加、批改、删除和查看车辆信息、用户信息和服务信息等;而用户能够进行查看车辆信息、服务信息和生存信息等操作。
确定本零碎用例模型后,上面别离对管理员和用户这两个角色的性能进行形容:
管理员
进入零碎后登陆管理员账号进入管理员页面。管理员次要性能如下图所示:
图 3.1 管理员性能用例图
用户
进入零碎后登陆用户账户进入用户页面。用户次要性能如下图所示:
图 3.2 用户性能用例图
零碎总体性能如下图所示:
编辑
编辑
编辑
编辑
环境须要
1. 运行环境:最好是 java jdk 1.8,咱们在这个平台上运行的。其余版本实践上也能够。
2.IDE 环境:IDEA,Eclipse,Myeclipse 都能够。举荐 IDEA;
3.tomcat 环境:Tomcat 7.x,8.x,9.x 版本均可
4. 硬件环境:windows 7/8/10 1G 内存以上;或者 Mac OS;
5. 数据库:MySql 5.7 版本;
6. 是否 Maven 我的项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis
- 前端:JSP+CSS+JavaScript+jQuery
应用阐明
- 应用 Navicat 或者其它工具,在 mysql 中创立对应名称的数据库,并导入我的项目的 sql 文件;
- 应用 IDEA/Eclipse/MyEclipse 导入我的项目,Eclipse/MyEclipse 导入时,若为 maven 我的项目请抉择 maven;
若为 maven 我的项目,导入胜利后请执行 maven clean;maven install 命令,而后运行; - 将我的项目中 springmvc-servlet.xml 配置文件中的数据库配置改为本人的配置;
- 运行我的项目,在浏览器中输出 http://localhost:8080/ 登录
运行截图
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
用户管理控制层:
package com.houserss.controller;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.pojo.User;
import com.houserss.service.IUserService;
import com.houserss.service.impl.UserServiceImpl;
import com.houserss.util.MD5Util;
import com.houserss.util.TimeUtils;
import com.houserss.vo.DeleteHouseVo;
import com.houserss.vo.PageInfoVo;
/**
- Created by admin
*/
@Controller
@RequestMapping(“/user/”)
public class UserController {
@Autowired
private IUserService iUserService;
/**
* 用户登录
* @param username
* @param password
* @param session
* @return
*/
@RequestMapping(value = "login.do",method = RequestMethod.POST)
@ResponseBody
public ServerResponse<User> login(User user,String uvcode, HttpSession session){String code = (String)session.getAttribute("validationCode");
if(StringUtils.isNotBlank(code)) {if(!code.equalsIgnoreCase(uvcode)) {return ServerResponse.createByErrorMessage("验证码不正确");
}
}
ServerResponse<User> response = iUserService.login(user.getUsername(),user.getPassword());
if(response.isSuccess()){session.setAttribute(Const.CURRENT_USER,response.getData());
}
return response;
}
}
管理员管理控制层:
package com.sxl.controller.admin;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxl.controller.MyController;
@Controller(“adminController”)
@RequestMapping(value = “/admin”)
public class AdminController extends MyController {
@RequestMapping(value = "/index")
public String frame(Model model, HttpServletRequest request)throws Exception {return "/admin/index";}
@RequestMapping(value = "/main")
public String main(Model model, HttpServletRequest request)throws Exception {return "/admin/main";}
@RequestMapping(value = "/tj1")
public String tj1(Model model, HttpServletRequest request)throws Exception {String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";
List<Map> list = db.queryForList(sql);
model.addAttribute("list", list);
System.out.println(list);
return "/admin/tj/tj1";
}
@RequestMapping(value = "/password")
public String password(Model model, HttpServletRequest request)throws Exception {return "/admin/password";}
@RequestMapping(value = "/changePassword")
public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map admin = getAdmin(request);
if(oldPassword.equals(admin.get("password").toString())){
String sql="update t_admin set password=? where id=?";
db.update(sql, new Object[]{newPassword,admin.get("id")});
return renderData(true,"1",null);
}else{return renderData(false,"1",null);
}
}
}
批改明码业务逻辑:
package com.sxl.controller.admin;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxl.controller.MyController;
@Controller(“userController”)
@RequestMapping(value = “/user”)
public class UserController extends MyController {
@RequestMapping(value = "/index")
public String frame(Model model, HttpServletRequest request)throws Exception {return "/user/index";}
@RequestMapping(value = "/main")
public String main(Model model, HttpServletRequest request)throws Exception {return "/user/main";}
@RequestMapping(value = "/password")
public String password(Model model, HttpServletRequest request)throws Exception {return "/user/password";}
@RequestMapping(value = "/changePassword")
public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map user = getUser(request);
if(oldPassword.equals(user.get("password").toString())){
String sql="update t_user set password=? where id=?";
db.update(sql, new Object[]{newPassword,user.get("id")});
return renderData(true,"1",null);
}else{return renderData(false,"1",null);
}
}
@RequestMapping(value = "/mine")
public String mine(Model model, HttpServletRequest request)throws Exception {
Map user =getUser(request);Map map = db.queryForMap(“select * from t_user where id=?”,new Object[]{user.get(“id”)});model.addAttribute(“map”, map); return “/user/mine”;
}
@RequestMapping(value = "/mineSave")
public ResponseEntity<String> mineSave(Model model,HttpServletRequest request,Long id
,String username,String password,String name,String gh,String mobile) throws Exception{
int result = 0;
String sql="update t_user set name=?,gh=?,mobile=? where id=?";
result = db.update(sql, new Object[]{name,gh,mobile,id});
if(result==1){return renderData(true,"操作胜利",null);
}else{return renderData(false,"操作失败",null);
}
}
}
通用治理模块:
package com.sxl.controller;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import com.sxl.util.JacksonJsonUtil;
import com.sxl.util.StringUtil;
import com.sxl.util.SystemProperties;
public class BaseController {
public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1 天
@Autowired
private SystemProperties systemProperties;
/**
* 取得配置文件内容
*/
public String getConfig(String key) {return systemProperties.getProperties(key);
}
/**
* 返回服务器地址 like http://192.168.1.1:8441/UUBean/
*/
public String getHostUrl(HttpServletRequest request) {String hostName = request.getServerName();
Integer hostPort = request.getServerPort();
String path = request.getContextPath();
if (hostPort == 80) {return "http://" + hostName + path + "/";} else {return "http://" + hostName + ":" + hostPort + path + "/";}
}
/***
* 获取以后的 website 门路 String
*/
public static String getWebSite(HttpServletRequest request) {String returnUrl = request.getScheme() + "://"
+ request.getServerName();
if (request.getServerPort() != 80) {returnUrl += ":" + request.getServerPort();
}
returnUrl += request.getContextPath();
return returnUrl;
}
/**
* 初始化 HTTP 头.
*
* @return HttpHeaders
*/
public HttpHeaders initHttpHeaders() {HttpHeaders headers = new HttpHeaders();
MediaType mediaType = new MediaType("text", "html",
Charset.forName("utf-8"));
headers.setContentType(mediaType);
return headers;
}
/**
* 返回 信息数据
*
* @param status
* @param msg
* @return
*/
public ResponseEntity<String> renderMsg(Boolean status, String msg) {if (StringUtils.isEmpty(msg)) {msg = "";}
String str = "{\"status\":\"" + status + "\",\"msg\":\""+ msg +"\"}";
ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,
initHttpHeaders(), HttpStatus.OK);
return responseEntity;
}
/**
* 返回 obj 数据
*
* @param status
* @param msg
* @param obj
* @return
*/
public ResponseEntity<String> renderData(Boolean status, String msg,
Object obj) {if (StringUtils.isEmpty(msg)) {msg = "";}
StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\"status\":\"" + status + "\",\"msg\":\""+ msg +"\",");
sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
sb.append("}");
ResponseEntity<String> responseEntity = new ResponseEntity<String>(sb.toString(), initHttpHeaders(), HttpStatus.OK);
return responseEntity;
}
/***
* 获取 IP(如果是多级代理,则失去的是一串 IP 值)*/
public static String getIpAddr(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();
}
if (ip != null && ip.length() > 0) {String[] ips = ip.split(",");
for (int i = 0; i < ips.length; i++) {if (!"unknown".equalsIgnoreCase(ips[i])) {ip = ips[i];
break;
}
}
}
return ip;
}
/**
* 国际化取得语言内容
*
* @param key
* 语言 key
* @param args
* @param argsSplit
* @param defaultMessage
* @param locale
* @return
*/
public static String getLanguage(String key, String args, String argsSplit,
String defaultMessage, String locale) {
String language = "zh";
String contry = "cn";
String returnValue = defaultMessage;
if (!StringUtil.isEmpty(locale)) {
try {String[] localeArray = locale.split("_");
language = localeArray[0];
contry = localeArray[1];
} catch (Exception e) {}}
try {
ResourceBundle resource = ResourceBundle.getBundle("lang.resource",
new Locale(language, contry));
returnValue = resource.getString(key);
if (!StringUtil.isEmpty(args)) {String[] argsArray = args.split(argsSplit);
for (int i = 0; i < argsArray.length; i++) {returnValue = returnValue.replace("{" + i + "}",
argsArray[i]);
}
}
} catch (Exception e) { }
return returnValue;
}
}