项目与自身毕设对比整理规划6 330 done


3.30 没用呢- -

 功夫不负有心人啊啊啊啊啊啊啊啊啊啊啊啊啊啊 成功了- - 但是很可恶 需要把数据返回然后放在那个文件里面才可以 现在就是问题就是返回数据的时候需要把这个文件存成数据接口

finish~~~~~~~~~~~

 // //数据接口
            // url:'/chinaServlet',
            // // url: 'jetbrains://idea/navigate/reference?project=Bishe_epidemic&path=chinas.json',
            // // toolbar: '#toolbarDemo',
            // page: true,
            // limit:10,
            // response:{
            //     statusCode: 200, //规定成功的状态码,默认:0
            // },
            // parseData:function (china){
            //     return{
            //         "code": china.status, //解析接口状态
            //         "msg": china.message, //解析提示文本
            //         // "code"(规定): res.status(本身), //解析接口状态
            //         "count": china.total, //解析数据长度
            //         "data": china.data.item,//解析数据列表
            //
            //         // data:[{
            //         // "locationIds":china.locationIds,
            //         // "provinceNames":china.provinceNames,
            //         // "currentConfirmedCounts":china.currentConfirmedCounts,
            //         // "confirmedCounts":china.confirmedCounts,
            //         // "suspectedCounts":china.suspectedCounts,
            //         // "curedCounts":china.curedCounts,
            //         // "deadCounts":china.deadCounts}]
            //     }
            // },
前端代码备份

https://blog.csdn.net/xxujia/article/details/81355498

解决方案:把数据整理输出了
OKK 完成!~~~~~撒花完结 把代码放在这里了~
1、  遇到的问题: 数据显示不出来 (整体来说 就是肯定是改动了部分的代码,导致不符合格式)比如最出的时候我想用${} 语句这种比较古法的方法去获取值 但是很显然,并不符合原来的格式所以不会显示

  解决思路:删掉就好了 跟着文档的格式来!!!
2、遇到的问题:应该叫要注意的地方吧
  1 table的id 这一坨建议是不要大变动 相应的是啥我说一下【table的id;code的状态:一定要是0!!!!!!!!!;msg:忘记了可以看一下文档;url是我存放数据的地方(我是后台查询数据之后封装成一个jsonobject的对象,然后创建一个文件存放这一坨 因为我的数据返回的不是layui想要的格式~就直接手动字符串改哈哈哈哈)page:这个就是是否分页,如果要分页的话 还要有别的操作 比如limit去限制每一页多少条数据,当然你直接写了只能是前端页面有个选框 实际实现代码还要在jsp里去写 我比价懒 (对不起】

3、要注意的地方 
应该蛮多人会不小心忽略这里吧 ~注意一下哦! 我是写在测试类测试通过之后才放在servlet里去运行的~希望大家都有测试的好习惯~~~ 接下来就是 接上增 删 改的后端方法了 以及退出登录 和数据展示到echarts~~
 

@Test
    public void test() throws IOException {
        //调用chinaservice查询
        NationService service = new NationServiceImpl();
        List nations = service.findAll();
        String jsonString = JSON.toJSONString(nations);
        //定义json数据的格式
        String str = "{\"code\":0,\"msg\":\"\",\"count\":1000,\"data\":" + jsonString+ "}";
        JSONObject object = JSON.parseObject(str, Feature.OrderedField);
        //转对象
//写入文件
        //定绝对路径的地址
        String dir = "D:\\。。。。。。。\web\\list\\nations.json";
(绝对路径)
        File file = new File(dir);
//如果文件不存在,创建文件
        if (!file.exists())
            file.createNewFile();
//创建FileWriter对象
        FileWriter writer = new FileWriter(file);
//向文件中写入内容
        writer.write(String.valueOf(object));
        writer.flush();
        writer.close();
        System.out.println("done");
    }
test代码~


3.29 日记

开门红啊!!!发现了个转的好帮手~~~https://segmentfault.com/q/1010000004916291 
初始化:String jsonString = JSON.toJSONString(list);

接下来就是改格式改格式!!!

 

还是不行- -数据格式对了 但是返回拿不到值再检查一下 找一个很不错的博主 https://blog.csdn.net/qq_36570464/article/details/83116225?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164856558716782094830251%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164856558716782094830251&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-20-83116225.142^v5^pc_search_result_cache,143^v6^control&utm_term=string%E8%BD%ACjson%E8%BF%94%E5%9B%9E%E5%88%B0layui&spm=1018.2226.3001.4187
早点看到我也不至于走这么久的弯路呜呜呜
又突然想到自己的页面编码格式!!!!


 

 好像还是格式的问题- - 彻底改了一下

报错日志:[http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [cn.tt.epidemic.web.servlet.china.ChinaServlet] in context with path [] threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed


3.28日记 关于json格式
https://blog.csdn.net/weixin_33857230/article/details/93555075
下jar包地址:https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.76
关于转格式:https://blog.csdn.net/qq_35192741/article/details/78688645
https://blog.csdn.net/leo187/article/details/105095021?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164856527916780255285717%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164856527916780255285717&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-6-105095021.142^v5^pc_search_result_cache,143^v6^control&utm_term=string%E8%BD%ACjson&spm=1018.2226.3001.4187

https://blog.csdn.net/weixin_44183847/article/details/118892732
https://blog.csdn.net/qq_20011175/article/details/76723928

3.26 一周一个项目文档了就是说哈哈哈
update做完 注意一个地方就是update就需要一个是可视化界面去确认sql语句是否正确 ,然后在把字段改成?比较好
2 当发现sql报错的时候,就把语句重新带回可视化的界面去进行修改 在可视化界面会更真实直观的发现你的错误在哪 可以更好的修正~~
把菜鸟的语句来了 https://www.runoob.com/sql/sql-update.html

太困了。。。。check复选框之后的东西不懂了 脑子转不动了 睡觉!

3.25开始做改
*如果添加本来就存在的id岂不是数据撞在一起了?所以是不是需要一个在储存之前的判断 就是判断id唯一 再继续储存?(代解决)
报错日志:Disconnected from the target VM, address: '127.0.0.1:51096', transport: 'socket'
端口被占用了 开cmd 把占端口的关掉就行 
回顾一下 我就知道网易云又占着8080- -

报错日志:Connected to the target VM, address: '127.0.0.1:51662', transport: 'socket'
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

 然后再重启电脑就好了

错误日志:org.springframework.dao.TransientDataAccessResourceException: StatementCallback; SQL [select * from nation]; Invalid value for getInt() - '没有'; nested exception is java.sql.SQLException: Invalid value for getInt() - '没有'
思路:看上去 好像是dao层和我本身的数据不符合  我去检查检查

写了构造方法和无参构造还是不行- - 翻译了一下bug 我回到可视化界面 答案找到了!!(应该是!)

 ok了 问题解决
就是类型的问题 日志yyds 

 完成情况:
*updata 和findbyid做完了 还没测试就是说
*接下来把china后台做了 或者把nation的条件查找给做了 
*再接下来就是把数据展示到前台和后台(一个是csv转成json用循环导入echats 一个是layui的 这个还要再琢磨 - - 我不太会的样子)

3.24 完成增加

(没做的部分
* 点击添加按钮跳转到添加界面 *添加完成后跳转会后台页面并查询所有数据
*查询页面中的数据更新没有展示到前台去看- - 这个具体还要看才行  *登陆页面登陆成功后跳转管理页面
*登出操作 *页面数据展示

饭后:del
有种我觉得这里会报错的预感 因为我的是layui的表格的值

 把integer改成了int 然后做了个测试类 del完成- - 就是不知道前台的代码会不会出事朴次



add和del今天做完吧 应该许愿 希望是这样~test要学看在哪赋值然后想要得到dao的数据之类的 一层一层测 -- 
报错日志: The server encountered an unexpected condition that prevented it from fulfilling the request.
查资料说可能是sql没连接 我再试试看

报错日志:美妙的500

org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO nation VALUES(?,?,?,?,?,?,?,?,?,?,?,?)]; Column 'id' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be null

信息: PreparedStatementCallback; SQL [INSERT INTO nation VALUES(?,?,?,?,?,?,?,?,?,?,?,?)]; Column 'id' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be null
应该是数据库的问题 后台的已经ok了的


 打印出来了 所以后台dao层应该是没问题- -但是这个不就冲突了吗 奇奇怪怪(吃完饭继续~)
报错: PreparedStatementCallback; SQL [INSERT INTO nation(id,continents,provinceName,currentConfirmedCount,confirmedCount,confirmedCountRank,suspectedCount,curedCount,deadCount,deadCountRank,deadRate,deadRateRank) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)]; Column 'id' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be null
但是我的已经改了impl了呀:

String sql = "INSERT INTO nation(id,continents,provinceName,currentConfirmedCount,confirmedCount,confirmedCountRank,suspectedCount,curedCount,deadCount,deadCountRank,deadRate,deadRateRank) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";

 我怀疑是界面的id错了 所以才会拿错值 改成id 就好了 


3.23 补一下昨天的进度 大概就是 做了add 然后正在test 太困了

3.22 进度跟进
遇到的问题就是 浏览器默认带erro=yes 但是我设置了三个- -用来判断来着 bug有点多 然后登录也没办法成功过去了 满烦躁的

还 退出登录 增 删 改 精确查找 数据可视化 可以说是亚历山大- -早知道选ssm就没这么多事了- -

package cn.tt.epidemic.web.servlet;

import cn.tt.epidemic.domain.User;
import cn.tt.epidemic.service.Userservice;
import cn.tt.epidemic.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码
        req.setCharacterEncoding("utf-8");
//        captcha验证码得name
        String verifycode_back = req.getParameter("verfycoide");
        Map map = req.getParameterMap();

//      校验验证码
        HttpSession session = req.getSession();
        String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
        session.removeAttribute("CHECKCODE_SERVER");//一次性

//验证码判空
        if (verifycode_back == null) {
            resp.sendRedirect("login_1.jsp?error=yes");
            return;
        }
        //验证验证码
        if (!checkcode_server.equalsIgnoreCase(verifycode_back)) {
            //            if (!checkcode_server.equals(captcha)) {
            //            判空操作用js写了
            //            req.setAttribute("msg","验证码错误或为空!");
            //            req.getRequestDispatcher("/login_1.jsp").forward(req,resp);
            resp.sendRedirect("login_1.jsp?error=check");
            return;
        }

        //封装user对象
        User user = new User();
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
//         判断user 账户和密码不正确
        //调用service
        Userservice service = new UserServiceImpl();
        User loginUser = service.login(user);
        if (loginUser==null){
            //登录失败 转发
                System.out.println("找不到用户!");
//            req.setAttribute("msg","用户名或密码错误!");
                resp.sendRedirect("login_1.jsp?error=nofind");
                return;
        }else {
            //储存数据
            req.setAttribute("user", user);
            //登录成功
            resp.sendRedirect("login_1.jsp?error=seccese");
            req.getRequestDispatcher("Backend.html").forward(req, resp);
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}
LoginServlet备份
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



    
    后台管理-管理员登陆
    
    
    
    
    
    
    
    
<%--  切换验证码  --%>
    <script type="text/javascript">
        //
        function refreshCode(){
            //1.获取验证码图片对象
            var vcode = document.getElementById("vcode");

            //2.设置其src属性,加时间戳
            vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
        }
    </script>
    


class="admin-login-background">
class="admin-header" style="margin-top: -30px"> 管理员登录
class="layui-form" action="/loginServlet">
class="layui-icon layui-icon-username admin-icon"> class="layui-input admin-input admin-input-username" >
class="layui-icon layui-icon-password admin-icon"> class="layui-input admin-input admin-input-verify" >

<%-- checkcode--%> class="layui-input admin-input"> class="admin-captcha" src="/checkCodeServlet" id="vcode"> <%-- 验证码 + 点击图片刷新图片–>--%>
<script src="css/layuimini.css" charset="utf-8"></script> <script> layui.use(['form'], function () { var form = layui.form, layer = layui.layer; // // 登录过期的时候,跳出ifram框架 // if (top.location !== self.location) top.location = self.location; // 进行登录操作 form.on('submit(login)', function (data) { data = data.field; if (data.username == '') { layer.msg('用户名不能为空'); return false; } if (data.password == '') { layer.msg('密码不能为空'); return false; } if (data.captcha =='') { layer.msg('验证码不能为空'); return false; } // layer.msg('登录成功', function () { // window.location = '../../../web/index.html'; // }); return false; }); }); </script> <script> //取出传回来的参数error并与yes比较 var errerror_back = null; error_back ='<%=request.getParameter("error")%>'; if(error_back =='yes'){ alert("请输入信息!"); }if(error_back =='nofind'){ alert("用户或密码错误!"); }if(error_back =='check'){ alert("验证码错误!"); }if(error_back =='seccese'){ alert("登陆成功!"); } <%--var error_check ='<%=request.getParameter("error_check")%>';--%> <%--if(error_check=='yes'){--%> <%-- alert("请输入正确验证码!");--%> <%--}--%> </script>
Login_1.jsp 备份

3.21

验证码:

package cn.tt.epidemic.web.servlet;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

/**
 * 验证码
 */
@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		
		//服务器通知浏览器不要缓存
		response.setHeader("pragma","no-cache");
		response.setHeader("cache-control","no-cache");
		response.setHeader("expires","0");
		
		//在内存中创建一个长80,宽30的图片,默认黑色背景
		//参数一:长
		//参数二:宽
		//参数三:颜色
		int width = 80;
		int height = 30;
		BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
		
		//获取画笔
		Graphics g = image.getGraphics();
		//设置画笔颜色为灰色
		g.setColor(Color.GRAY);
		//填充图片
		g.fillRect(0,0, width,height);
		
		//产生4个随机验证码,12Ey
		String checkCode = getCheckCode();
		//将验证码放入HttpSession中
		request.getSession().setAttribute("CHECKCODE_SERVER",checkCode);
		
		//设置画笔颜色为黄色
		g.setColor(Color.YELLOW);
		//设置字体的小大
		g.setFont(new Font("黑体",Font.BOLD,24));
		//向图片上写入验证码
		g.drawString(checkCode,15,25);
		
		//将内存中的图片输出到浏览器
		//参数一:图片对象
		//参数二:图片的格式,如PNG,JPG,GIF
		//参数三:图片输出到哪里去
		ImageIO.write(image,"PNG",response.getOutputStream());
	}
	/**
	 * 产生4位随机字符串 
	 */
	private String getCheckCode() {
		String base = "0123456789ABCDEFGabcdefg";
		int size = base.length();
		Random r = new Random();
		StringBuffer sb = new StringBuffer();
		for(int i=1;i<=4;i++){
			//产生0到size-1的随机值
			int index = r.nextInt(size);
			//在base字符串中获取下标为index的字符
			char c = base.charAt(index);
			//将c放入到StringBuffer中去
			sb.append(c);
		}
		return sb.toString();
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request,response);
	}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>




    
    
    
    管理员登录

    
    
    
    <script src="js/jquery-2.1.0.min.js"></script>
    
    <script src="js/bootstrap.min.js"></script>
    <script type="text/javascript">
        //切换验证码
        function refreshCode(){
            //1.获取验证码图片对象
            var vcode = document.getElementById("vcode");

            //2.设置其src属性,加时间戳
            vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
        }
    </script>


        

https://blog.csdn.net/liyunfu233/article/details/102842240 参考table的技巧

json格式的内容   

我决定还是继续做功能先了。。

重装idea 重新配置 很烦 再也不卸载了。。。

Q:右键找不到servlet:https://blog.csdn.net/weixin_43883917/article/details/111152192 参考文档

3.20

黑马的项目需要javamail 毕设不用

1-创建数据库

2-创建表 表里面对应的字段
  (不用注册)

   1-登录

      使用js完成表单校验
      ajax完成表单提交跳转页面(1-用户名 密码的 单词字符长度 2-验证码 非空)

 

 创建项目 maven :  java-Bishe_maven 

用于把webapp下的项目挪过来

 把pom刷新了 到创建用户类 连接数据库可以看一下配置文件的各种东西

  2-退出

3.19 报错日志:No goals have been specified for this build. You must specify a validlifecy

解决:https://blog.csdn.net/jiangyu1013/article/details/86510112

 报错日志: html里的情况 我以为是tomcat的原因 直接把maven的配置给删了 用tomcat  然后肯定是路径的问题 果不其然 路径本身就是有/把/给去掉就好了

 报错日志:Failed to start connector [Connector[HTTP/1.1-8080]]

解决:在cmd窗口 

1 查看tomcat的所使用的端口 netstat -ano|findstr 8080

2 taskkill /pid ***** /f          (***为对应的最后一列号数)
我听着网易云 然后杀死的那瞬间 我网易云没了。。。所以 网易云你为什么占我的8080端口- - 而且你还老挡我的快捷键- -

报错日志: jar包都有 但是就是maven就是报红 我参考了网上的所有方法 给大家整理一下思路:


1-把本地仓库全删了 重新下
2-把pom文件剪切 重新输入进去
3-把setting改了
4-删掉缓存
  1-是cmd在根目录输入命令删
  2-是在file那里删
5-在设置那里updata一下资源
6-把本地jar包删了重来
7-(本次解决方法- -)
疯狂重启 在file那里点close project 全关了 后台也关了 然后重新打开文件 让他重新加载