目录
第一天
利用之前做的登录先加进去,本来不想放登录的,没地方用 现在想法是:实现两个大功能:-
用户界面:
查询垃圾 ,反馈,申请管理员,登录界面跳转.
查询方式:文本,语音,图片. 其中后两种方式最根本还是文本查询,通过调用API获取文本结果进行查询.
反馈信息:未收录垃圾信息或分类信息错误
申请管理员:可登录管理界面 -
管理界面:
跳转查询界面,查询垃圾,修改或增加垃圾信息,接收用户反馈,添加管理员账号.
设置登录防止乱改.
登录流程图:
具体思路流程:
目前已实现功能:登录相关链接:jQuery写的ajax与servlet和数据库交互实现登录
基本界面雏形
正在测试从数据库获垃圾信息
第二天
今天将从ajax发送请求从数据库获取垃圾信息的功能实现了 具体步骤和登录的相似 其中具体代码:protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String gname=request.getParameter("name");
System.out.println(gname);
if(gname!=null&& !gname.equals("") && !gname.equals(" ")) {
try {
String sql="select * from garbage where gname=?";
JdbcUtil jdbcUtil=new JdbcUtil(sql);
jdbcUtil.statement.setString(1,gname);
ResultSet rs=jdbcUtil.statement.executeQuery();
if (!rs.next()) {
System.out.println("未收录");
}
rs.previous();
while (rs.next()) {
System.out.println(rs.getString(1));
System.out.println("垃圾种类: " + rs.getString(2));
System.out.println("垃圾描述: " + rs.getString(3));
System.out.println("处理方式: " + rs.getString(4));
StringBuilder sb=new StringBuilder();
for(int i=0;i<4;i++) {
sb.append(rs.getString(i+1));
sb.append(" ");
}
response.getWriter().write(sb.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}else {
response.getWriter().write("2");
}
}
通过查询垃圾名称根据名称是否存在获取其他信息这里我打印出来方便观察,
ajax请求用jQuery编写
$(document).ready(function () {
$("#select").click(function () {
$.ajax({
type:'POST',
dataType:'text',
url:'SearchServlet',
data:"name="+encodeURI($('#name').val()),
contentType:'application/x-www-form-urlencoded',
success:function (msg) {
if(msg==="2"){
alert("请输入要查询的垃圾");
}
else {
for(i in msg.split(" "))
{
var tr;
tr='<td>'+msg.split(" ")[i]+'</td>';
$("#list").append('<tr>'+tr+'</tr>')
}
}
}
})
})
});
其中后面生成表格显示信息的功能出现了问题,每次获取数据显示都是一闪而过,目前未找到解决办法
接下来的目标是调用API实现拍照和语音功能的查询,
通过调用API查询图片或解析语音并获取文本
然后与前面的文本查询相同
第三天
将管理界面功能进行了添加,目前只写了添加元素的方法,修改的方法暂时不考虑这里我加了一个判断,再添加垃圾的时候,不能添加空,相同垃圾会提示已经存在此垃圾,
具体代码与前面写的差不多
在查询功能中还修改了模糊查询,在获取ajax发送数据之后将获取的数据拆分每个字符前加一个%
增加数据的sql语句我用的之前爬虫使用的方法,所以我在jdbc中又写了一个不带sql参数的方法如下
JdbcUtil(){
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://129.211.1.53:3306/refuse_classification?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","Wbb.367494");
statement1=connection.createStatement();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
添加以及判断操作
try {
//从表中获取垃圾名称
String sql="select * from garbage where gname like ?";
//调用数据库工具类
JdbcUtil jdbcUtil=new JdbcUtil(sql);
jdbcUtil.statement.setString(1,name.toString());
ResultSet rs=jdbcUtil.statement.executeQuery();
if (!rs.next()) {//如果库中没有此垃圾
try {
JdbcUtil jdbcUtil1 = new JdbcUtil();
String sql1 = "insert into garbage values('" +
gname +
"','" +
variety +
"','" +
describe +
"','" +
handle +
"')";
jdbcUtil1.statement1.execute(sql1);
response.getWriter().write("1");
jdbcUtil1.close();
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
rs.previous();
while (rs.next()) {
jdbcUtil.close();
rs.close();
response.getWriter().write("2");
}
} catch (Exception e) {
e.printStackTrace();
}
目前已将项目打包部署到腾讯云链接为129.211.1.53:8080/test/
接下来就搞下爬点垃圾信息存到库中.
第四天
寻找垃圾分类资源无果,暂时先跳过,增加了管理员快捷查询操作,增加了些注释,源码在github:https://github.com/wbbj/test目前正在学习新知识,然后对项目进行改进.
第五天
之前学习了SpringMVC的一些基础知识,还有Mybatis的一些基础知识,虽然还不太会用,但大体了解了基本步骤,了解了配置文件的配置 然后学习了ssm整合写了个小的ssm整合的demo 相关链接:[SSMdemo](https://blog.csdn.net/qq_30039097/article/details/98476131) 然后对我自己的demo进行了ssm整合,除了具体页面还没整合,对数据库的一系列操作并在网页上以json形式或返回数字都已经整合完成 项目以上传github 链接:[SSM整合](https://github.com/wbbj/atom) 这里我将两个SSM都放进这里了具体整合思路:
- jar包什么的就不说了,前面有个小demo链接,整合后的源码和demo都在github
- 然后就是目录结构和配置文件的配置,这些都可以看前面的SSMdemo,后面的一些操作都可以参考以上源码
- 首先确定项目中需要建立那些实体类:
- Garbage
- Manage
- 然后确定需要用到那些功能
- 查询垃圾信息
- 管理员登录
- 快捷查询垃圾
- 增加垃圾
- 这里的Filter还没有写好正在查资料学习配置方法
- 然后编写dao层
- 然后service层以及service的实现类impl
- 最后编写web层也就是Controller的相关配置
- 这里可以先不考虑页面先将基本操作实现
第六天
今天将页面整合了下 具体操作不是很难,但还是遇到很多bug,还有经验不足,很多细节没注意,比如将list信息整合到StringBuilder,这里直接整合看起来没什么问题,但是我要的信息是Object中的所有属性,并且要分开来 这里我是这样写的,没找到其他方法,可能是写的有问题.StringBuilder sb = new StringBuilder();
for (int i = 0; i < garbageService.getGarbageByGname(gname.toString()).size(); i++) {
sb.append(garbageService.getGarbageByGname(gname.toString()).get(i).getGname()).append(" ");
sb.append(garbageService.getGarbageByGname(gname.toString()).get(i).getVariety()).append(" ");
sb.append(garbageService.getGarbageByGname(gname.toString()).get(i).getDescribe()).append(" ");
sb.append(garbageService.getGarbageByGname(gname.toString()).get(i).getHandle()).append(" ");
}
页面用的仍然是ajax请求,其中有关返回值类型,我改了好多次,最终还是用了text/html,一开始想用json但是遇到了些问题,感觉写法都差不多就没再改
然后将登录验证的拦截功能加上去了
SSM拦截器方法参考SSM整合之拦截器
这里主要了boolean方法,然后在spring-web.xml文件中配置相关拦截信息
第七天
本来这两天是要将项目搞到小程序上,但是装开发者工具浪费了不少时间,而且研究了半天不知道怎么搞就先扩展项目的功能了 今天搞了项目的图片识别功能 首先获取的代码官网都有,其中获取图片信息的代码稍需改动,网站给的代码是本地路径 然后获取上传图片信息并保存到本地的代码需要自己写 这里我不是很清楚SSM中该如何布置代码,写的可能不太对.但是测试没什么问题 这里需要三个包commons-io和commons-fileupload,以及org.json 因为返回的数据形式是固定的所以可以直接根据返回的数据判断改了下请求的方式一开始用的是action,用这个不方便获取响应信息,然后还是改用了ajax,一开始在网上找ajax上传图片,都是用的特殊插件
一直没找的下载资源就放弃了
这是我参考的ajax上传图片链接:https://segmentfault.com/a/1190000017155089?utm_source=tag-newest
目前已经实现了图片查询,但是这里只能选择本地图片还得增加拍照上传功能
然后研究语音识别功能