servlet实现车险管理系统
来源:互联网 发布:星星知我心原唱是谁 编辑:程序博客网 时间:2024/06/02 11:24
很高兴又一篇文章带给大家,今日带领大家怎么用servlet实现后台管理系统。如果想学习servlet相关知识请见文章超详细servlet+jdbc+html+css实现后台管理登陆。今日带领大家学习的知识点包括如下几个方面。当然仅限学习,希望能给各位在学者带来帮助。实际项目目前大多使用ssh框架集成。关于ssh文章后续会出。首先看到本文的效果图。完整项目上传到github了,请点击此处阅读完整项目代码。
- 如何建立数据关联表,包括增删改查(本文用的是mysql数据库)
- 如何使用过滤器infiter。
- 分页实现
- MVC思想架构
项目需求分析:用户到汽修公司缴纳资金入保,工作人员使用该后台管理系统为其入保。公司可以为用户注册账户,充值,返现操作。返现流程为比如入保需要缴纳现金5000,返现2500元,分12个月返还到用户账户。账户的资金可以用来在店修车,也可以用来第二年入保。
上述过程就是该项目的大致流程。在熟悉了项目的结构之后,我们首先要做的就是编写项目的开发文档。其次是整理数据库结构逻辑,建立数据库关联表。
在本项目中,凡是跟用户帐号打交道的都需要建立与其关联。比如用户余额表,登录信息表,返现余额表。接下来我们看到sql语句如何建立关联表。
create table if not exists `user`(`id` int unsigned auto_increment PRIMARY KEY,`usr_name` varchar(100) NOT NULL,`usr_email` varchar(50) NOT NULL,`usr_phone` varchar(50) NOT NULL,`usr_IDcard` varchar(50) NOT NULL,`usr_carID` varchar(50) NOT NULL, `login_info_id` int unsigned,`id_cash_left` int unsigned,`id_cash_back` int unsigned,FOREIGN KEY(login_info_id) REFERENCES logininfo(login_info_id) ON DELETE CASCADE,FOREIGN KEY(id_cash_left) REFERENCES user_cash_left(id_cash_left) ON DELETE CASCADE,FOREIGN KEY(id_cash_back) REFERENCES cashback(id_cash_back) ON DELETE CASCADE)ENGINE=InnoDB DEFAULT CHARSET=utf8;//登录信息表create table if not exists `logininfo`(`login_info_id` int unsigned auto_increment PRIMARY KEY,`usr_account` varchar(20) NOT NULL,`usr_pwd` varchar(20) NOT NULL,`flag` int NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;//用户余额表create table if not exists `user_cash_left`(`id_cash_left` int unsigned auto_increment PRIMARY KEY,`usr_cash` int NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;//投保返现信息记录表create table if not exists `insure_record`(id_insure int unsigned auto_increment PRIMARY KEY,`insure_account` varchar(20) NOT NULL,`data_insure` datetime NOT NULL,`ret_count` int NOT NULL,`insure_name` varchar(20) NOT NULL,`insure_IDcard` varchar(50) NOT NULL,`insure_carID`varchar(20) NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;//修车信息记录表create table if not exists `car_fix_record`(`id_fix` int unsigned auto_increment PRIMARY KEY,`fix_account` varchar(20) NOT NULL,`data_fix_car` datetime NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;//操作记录日志表CREATE TABLE if not exists `operation_record`(operate_id int unsigned AUTO_INCREMENT PRIMARY KEY, operation_account varchar(20) not null, identity_id varchar(20) not null, operate_type varchar(20), operate_date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;//返现余额表CREATE TABLE if not exists `cashback`(id_cash_back int unsigned AUTO_INCREMENT PRIMARY KEY,cashback double);
如上代码中,我们可以看到user用户表与三个表相关联。只需要把所关联的表的主键作为外键约束,与几个表相关联就写几个。
关于过滤器的用法。首先我们在infiter包下建立过滤器,比如session过滤器,ip过滤器,编码过滤器等。只需要继承Filter类即可。
在此处给大家看下session过滤器的用法。
package com.safeCar.filter;import java.io.IOException;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.safeCar.Bean.LoginInfo;import com.safeCar.tools.DBUtils;public class SessionFilter implements Filter{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest) arg0;HttpServletResponse response = (HttpServletResponse) arg1;HttpSession session = request.getSession();// 获得url eg:RoleServlet?op=torolelistString url = request.getServletPath();System.out.println(url);// 判断:排除筛选首页和提交登陆页if (!url.contains("/login.jsp") && !url.contains("/register.jsp") && !url.contains("LR.action")&& !url.contains("/index.jsp") && !url.contains("/about.jsp") && !url.contains("/services.jsp")&& !url.contains("/contact.jsp")) {// session不存在if (session.getAttribute("userinfo") == null) {response.sendRedirect(request.getContextPath() + "/index.jsp");return;} else {// session存在判断是否是管理员,连接数据库String sql = "select flag from logininfo where usr_account = ?";try {// 先获取session中存在获取用户名PreparedStatement pst = DBUtils.getConnection().prepareStatement(sql);LoginInfo o = (LoginInfo) session.getAttribute("userinfo");String account = o.getUsr_account();pst.setString(1, account);ResultSet set = pst.executeQuery();int flag = 0;while(set.next()){ flag =set.getInt(1);}if(flag==1){//是个管理员,啥事不用干留着在个界面}else if(flag==0){//重定向到首页,你不是管理员来管理界面下转悠啥response.sendRedirect("index.jsp");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}arg2.doFilter(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}
在编写了过滤器代码之后,需要在web.xml之后进行配置。配置的标准写法如下:
<filter> <filter-name>sessionFilter</filter-name> <filter-class>com.safeCar.filter.SessionFilter</filter-class> </filter> <filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
关于MVC架构思想,给大家看下项目的结构图。具体请看github上的完整项目。由impl包来实现各个包的接口,目的方便分工合作。开发人员只需要接口,就可以合作开发。
最后给大家说说分页展示,这个我用到的是layui框架,layui官网。在这里讲下如何使用layui实现分页效果。首先需要留个区块来动态展示我们查询的结果,展示的是表格形式。下面这段代码会教你快速学会使用layui分页控件。
首先我们在table标签下添加一个div块,并为其提供id。
接下来在tbody标签内容留空,同样为其添加一个id即可。
<!-- 此处填写tab里面的内容 --><div class="tab_content_01"><table class="layui-table"><colgroup><col width="150"><col width="150"><col width="200"><col width="200"><col width="200"></colgroup><thead><tr><th>用户名</th><th>姓名</th><th>邮箱</th><th>手机号</th><th>身份证</th><th>车牌号</th></tr></thead><tbody id="biuuu_city_list"></tbody></table><div id="page_query" style="text-align: center;"></div></div>
然后是对应的是动态分页的js代码如下:点击搜索按钮后,提交ajax请求,请求成功后将服务器返回的分页数据全部分页。我们可以看到下面的代码将每行的数据构造出来,再通过for循环构造出每页的数据。
<script>$('.logout').click(function(){$.ajax({type:'POST',url:'LR.action',data:"action=Logout"});});$('#search').click(function(){var name = $('.layui-input').val();if(name==''){alert('提示:搜索内容不能为空!!!');return;}var data ;$.ajax({type:'POST',url:'adm.action',data:"action=AdminQuery&usr_name="+name,success:function(res){ data = eval("("+res+")"); data = data.usr_info; var nums = 5; //每页出现的数量var pages = Math.ceil(data.length/nums); //得到总页数var thisDate = function(curr){ var str = '', last = curr*nums - 1; last = last >= data.length ? (data.length-1) : last; for(var i = (curr*nums - nums); i <= last; i++){ str += '<tr>'+'<td>'+data[i].usr_account+'</td>'+'<td>'+data[i].usr_name+'</td>'+'<td>'+data[i].usr_email+'</td>'+'<td>'+data[i].usr_phone+'</td>'+'<td>'+data[i].usr_IDcard+'</td>'+'<td>'+data[i].usr_carID+'</td>'+'</tr>'; } return str;};//调用分页laypage({ cont: 'page_query', pages: pages, skin: '#009688', jump: function(obj){ document.getElementById('biuuu_city_list').innerHTML = thisDate(obj.curr); }}) $('#biuuu_city_list').find('tr').eq(0).css({'background-color':'#fffcf6','color':'#070','font-familiar':'微软雅黑','font-weight':'bold'}); $('#biuuu_city_list').find('tr').eq(1).css({'background-color':'#fafafa','color':'#070','font-familiar':'微软雅黑','font-weight':'bold'}); $('#biuuu_city_list').find('tr').eq(2).css({'background-color':'#fffcf6','color':'#070','font-familiar':'微软雅黑','font-weight':'bold'}); $('#biuuu_city_list').find('tr').eq(3).css({'background-color':'#fafafa','color':'#070','font-familiar':'微软雅黑','font-weight':'bold'}); $('#biuuu_city_list').find('tr').eq(4).css({'background-color':'#fffcf6','color':'#070','font-familiar':'微软雅黑','font-weight':'bold'});},error:function(){alert("error");}});});</script>
熟悉js的小伙伴们对上述代码一定很容易明白。
- servlet实现车险管理系统
- 车险
- 【servlet+mybatis实现一个仓库管理系统】之mybatis手记
- 用Servlet实现简单的图书管理系统
- jsp servlet mysql实现的学生宿舍管理系统源码
- Servlet实现日志管理
- JSP+Servlet培训班作业管理系统[6]-人员管理功能实现
- 职业生涯管理系统 servlet+javabean+mysql(三)登陆的实现
- JSP+Servlet培训班作业管理系统[1]-登录功能的简单实现
- JSP+Servlet培训班作业管理系统[8] -数据库操作层实现
- JSP+Servlet培训班作业管理系统[9] -登录功能的实现
- JSP+Servlet培训班作业管理系统[21] -番外篇之登录页美工实现
- JSP+Servlet培训班作业管理系统[11] -通用CRUD后端的实现(以人员管理为例)
- jsp+servlet+jdbc学生管理系统
- Servlet登陆注册管理系统1.0
- Servlet登陆注册管理系统2.0
- Servlet登陆注册管理系统0.0
- JAVA图书管理系统(JSP+Servlet)
- String与stringbuilder的效率差异
- spark第3天
- C语言实验——分割整数
- 图像目标检测与跟踪学习笔记(四)
- Redis实战总结(一)
- servlet实现车险管理系统
- RabbitMQ入门教程(十三):虚拟主机vhost与权限管理
- LeetCode Union-Find(并查集) 专题(一)
- boost 库的编译与链接
- Matrix67:什么是P问题、NP问题和NPC问题
- 撤销功能的实现——备忘录模式(四)
- 数字图像处理期中学习报告
- 开始前端-----第六篇
- thinkPHP如何将前台后台一起实现静态化,隐藏index.php,实现分组模式