javaWeb实现空气质量的检测

功能以及技术

功能 技术
用户注册登陆 jsp与servlet
用户权限管理 拦截器的结合
用户自动登陆 拦截器
空气质量的增删查改 java jdbc
提醒用户弹出窗口 触发器
每小时更新网页的pm2.5 事务调度
可视化 数据挖掘

具体实现

一.建立数据库

1.下载navicat

2.数据整理

3.导入数据

问题以及解决
1.单位冗余,删除单位
2.数据行是第几行?
3.文件类型书否正确?

二.jdbc连接数据库实现增删查改

1.引入jar包或maven依赖
2.加载驱动器

Class.for("com.mysql.jdbc.driver")

2.连接数据库,返回句柄

Connect connect = DrivingManager.getConnection("jdbc:mysql://localhost:3360/你数据库的名字","用户名","密码");

3.执行sql语句,获取数据

            String sql = "select * from beijing_2016 where YEAR = ? and month = ? and day = ? and hour = ?";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1,Year);
            statement.setString(2,month);
            statement.setString(3,day);
            statement.setString(4,hour);
            ResultSet resultSet = statement.execueQuary();

错误
1.驱动器加载失败
(1)没有引入c3p0jar包
(2)没有引入mysqljar包
(3)或者引入,路径不对

三.Jsp与servlet传递与获取数据

js获取返回值
1.使用attribute

<% String pm2_5 = response.getAttribute("pm")%>
<%=pm2_5%>

2.使用session

<%=request.getSession().setAttribute("","");%>

3.使用url


错误
使用setAttriute无法获取,改用session,直接使用可能会出现错误。

表单提交

用户名: 密码:

方法二:

response.setCharacterEncoding("utf-8);//设置response缓冲区编码
//相当于上面两句
response.setHeader("content-type","utf-8");
response.setContentType("text/html;charset=UTF-8")

四.页面布局

1.背景图片的加载
错误
因为路径的错误导致加载不出来,IDEA中有独有的项目路径 (日了狗了)
javaWeb实现空气质量的检测_第1张图片
需要报红色的删除就能使用localhost:8080/了,否则怎么都无济于事

2.使用f12进行页面的调错。

3.spring mvc会拦截资源,so,配置不拦截

未完待续

五.温馨提示

六.页面刷新与事务调度

七.用户的自动登陆与权限管理

1.实现监听器进行权限管理
其实cookie中不需要验证账号密码是否正确了,只要cookie的名字是唯一的
逻辑
(1)判断是否有loginUser的session如果有直接放行
(2)没有,判断是否有cookie,没有直接返回登陆界面
(3)有,判断是否正确,如果正确放行,不正确返回登陆页面

        System.out.println("进来了");
        //强转
        HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
        HttpServletResponse httpServletResponse = (HttpServletResponse)servletResponse;
        //验证session中是否有用户
        User user = (User)httpServletRequest.getSession().getAttribute("loginUser");
        if(user != null){//说明正在登陆,并且已经登陆成功,直接放行
            System.out.println("有session");
            filterChain.doFilter(httpServletRequest,httpServletResponse);
            return;
        }

        //验证是否包含自动登陆的cookie
        Cookie[] cookies = httpServletRequest.getCookies();
        Cookie usercokie = null;
        if(cookies != null){
            for(Cookie cookie :cookies){
                if("autoLogin".equals(cookie.getName())){
                    usercokie = cookie;
                    break;
                }
            }
        }
        if(usercokie == null){//如果没有cookie,返回登陆页面
            filterChain.doFilter(httpServletRequest,httpServletResponse);
            httpServletResponse.sendRedirect("/login.jsp");
            return; 
        }

        //验证cookie的信息是否正确,
        String[] u = usercokie.getValue().split("@");
        String username = u[0];
        String password = u[1];
        UserService userService = new UserService();
        user = userService.login(username,password);
        if(user != null){//正确,放行
            System.out.println("cookie正确");
            filterChain.doFilter(httpServletRequest,httpServletResponse);
        }else{//错误返回登陆页面
            httpServletResponse.sendRedirect("/login.jsp");
        }

错误
就算response.redirect了也要return 否则出错
2.配置过滤器
如同配置servlet
(1)名称-类的映射
(2)域名-
名称映射

   
        userfilter
        filter.WebFilter
    

    
        userfilter
        /*
    

3.登陆配置cookie
可能会出现Bug,因为返回了一个类
如果登陆成功,将信息加入cookie中
(1)创建cookie,构造方法为名称加值
(2)设置生命周期和路径
(3)加入response队列

Cookie cookie = new Cookie("autoLogin",username + "@" + password);
cookie.setPath("/");
cookie.setMaxAge(60*60);//确定生命周期
response.addCookie(cookie);//将cookie返回

jsp页面中404问题解决方案
在web中配置文件

    
        default
        *.jpg
        *.js
    

八.数据可视化
echarts组建使用
ajax实现前后端交互

你可能感兴趣的:(技术)