美文网首页
JavaWeb开发遇到的小问题

JavaWeb开发遇到的小问题

作者: 做梦枯岛醒 | 来源:发表于2017-12-26 10:45 被阅读35次

    最近在某公司实习,JavaWeb岗,先前没有接触过Jweb,所以现学现卖啦,哈哈哈。

    1.Jdbc驱动加载及一堆坑

    我们已经知道JDBC的工作流程:

    A:注冊载入JDBC驱动程序
    B:得到连接对象 Connection
    C:创建 Statement对象
    D:运行sql语句
    E:处理结果
    F:关闭资源释放资源

    但是使用JDBC或者mysql的时候,需要在IDE里导入lib,我用的idea导入方式为:File->project structure -> Libraries -> from maven -> 添加,搜索com.mysql就可以在候选框中选择一个合适的版本下载,下载成功之后就可以导入mysql的文件了。


    MYSQL

    导入之后一直提示加载不了驱动,显示Class Not Found错误,网上查了各种各样的资料,都是说叫导入com.mysql的包,但是实际上已经导入了,写了一个javase的程序来看也没问题,又从本地导入一遍lib还是不行,后来想是不是因为写了个javaweb的原因,于是接着搜,终于在乎上发现了一篇文章https://www.zhihu.com/question/41416361,我们一定要保证WEB-INF下的lib目录里有这个lib包,假如你的没有,包括文件夹,没有就新建,直到达到下图这种效果,这样子WEB的驱动才算加载完成。

    image.png

    加载完成之后,我还遇到了

    [Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb](http://blog.csdn.net/anaini1314/article/details/71157791)
    
    

    这么一个错误,经查阅资料得知,是jdbc版本与mysql版本不一致
    按照最新官方提示支持将com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver就不报错了。

    以为终于要好了,没想到还有一个错误,截图如下

    image.png
    带乱码的错误,time zone是时区的意思,那么大概就是时区问题啦,后来查阅资料解决这个问题,导致他的原因还是版本问题,
    然后我们修改一下dburl,也就是你链接时候用的url,加上后面的时区就ok了。
    jdbc:mysql://localhost:3306/test?serverTimezone=UTC

    终于输出了,但是有个小问题就是汉字显示不出来,那这个必然是编码问题,那么这个地方就是添加这三行编码设置就行(doGet方法里)

     @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           //设置响应内容类型
           req.setCharacterEncoding("utf-8");
           resp.setContentType("text/html;charset=utf-8");
           resp.setCharacterEncoding("utf-8");
    }
    

    激动的看一下最终效果图


    image.png

    2.MyBatis传入多参数

    需求场景:查询某张表里的满足某个条件的数据,由于数据量比较大,需要分页加载。

    那么MyBatis传入多个参数的时候就会产生错误,我们得想办法让他接受一个参数,传入Bean的话貌似不太合理,八竿子打不着的关系封装成Bean显得太过智障,那么我们可以使用Map来处理,具体代码如下:
    Service

    Map<String, Object> filter = new HashMap<>();
               filter.put("wordId", word_id);
               filter.put("page", (page-1)*PAGE_SIZE);
               mEdits =  iEditDao.getLogListByPage(filter);
    

    EditDao

      /**
         * @param a HashMap包含文本id和页码
         * @return List<Edit> 查询列表
         * */
        @Select("select * from edit_log where wordId=#{wordId} limit #{page},10")
        List<Edit> getLogListByPage(Map<String, Object> a);
    

    这是接口注解写法,对于Mapper.xml映射网上有很多参考,在这里就不写了。

    相关文章

      网友评论

          本文标题:JavaWeb开发遇到的小问题

          本文链接:https://www.haomeiwen.com/subject/nqydgxtx.html