javaWeb实现空气质量的检测
功能以及技术功能技术用户注册登陆jsp与servlet用户权限管理视图与拦截器的结合用户自动登陆拦截器空气质量的增删查改java jdbc提醒用户弹出窗口触发器每小时更新数据库事务调度画图数据挖掘预测不会具体实现...
功能以及技术
| 功能 | 技术 |
|---|---|
| 用户注册登陆 | jsp与servlet |
| 用户权限管理 | 拦截器的结合 |
| 用户自动登陆 | 拦截器 |
| 空气质量的增删查改 | java jdbc |
| 提醒用户弹出窗口 | 触发器 |
| 每小时更新网页的pm2.5 | 事务调度 |
| 可视化 | 数据挖掘 |
具体实现
一.建立数据库
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
<a href = "login?username = "fuzekun"& password = "123"">
错误
使用setAttriute无法获取,改用session,直接使用可能会出现错误。
表单提交
<form action = "/处理文件",post(get)>
用户名:<input id = "name">
密码:<input id = "password">
<input type = "submit" value = "提交>
</form>
乱码问题
| 字节流 | 字符流 |
|---|---|
| 使用方法一 | 使用方法二 |
方法一:
(1)response.setHeader("content-type","utf-8);//设置默认的打开方式
(2)response.getOutputStream("中文".getBytes("utf-8"));//中文转成字节数组编码
方法二:
response.setCharacterEncoding("utf-8);//设置response缓冲区编码
//相当于上面两句
response.setHeader("content-type","utf-8");
response.setContentType("text/html;charset=UTF-8")
四.页面布局
1.背景图片的加载
错误
因为路径的错误导致加载不出来,IDEA中有独有的项目路径 (日了狗了)
需要报红色的删除就能使用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)域名-
名称映射
<filter>
<filter-name>userfilter</filter-name>
<filter-class>filter.WebFilter</filter-class>
</filter>
<!-- 拦截所有的访问-->
<filter-mapping>
<filter-name>userfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
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中配置文件
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
八.数据可视化
echarts组建使用
ajax实现前后端交互
更多推荐



所有评论(0)