关闭

技术问题小总结1

标签: springbootmarkdownthymeaf
110人阅读 评论(0) 收藏 举报
分类:

前言

做项目是提高技术最高效的手段,这句话从某种程度上而言真是太对了。
因为不论是大项目还是小项目,不论是正式项目还是个人业务项目,只要在做,就总能遇到各种各样的问题,从而能直接着重于某个点去学习。
以下便是最近做业余小项目-tzxbloghttps://github.com/tuzongxun/tzxblog时遇到的一些问题和解决办法记录。

springboot日志的问题

问题描述

springboot默认的是logback日志框架,不做任何配置的情况下,日志输出在控制台。
我想要通过配置把日志内容输出到指定的文件中,于是做了如下的配置:

logging.level.root=warn
logging.level.com.tzx.blog=warn
logging.file=mylog.log
logging.path=C:/Users/tzx/Desktop/mylog/

我下意识的认为logging.file是日志文件名,logging.path是日志文件输出的目录。
但是实际运行时发现我想要的C:/Users/tzx/Desktop/mylog/mylog.log文件没有出现。

问题分析

经查阅springboot官方文档,发现了如下的一些内容:
这里写图片描述

很显然,官方文档中并没有我这种配置。
根据上边的描述可知这里的日志有三种配置方式:
1. logging.filelogging.path都不做任何配置,则默认日志输出到控制台
2. 只配置logging.file,如果这里只是一个文件名,则会在当前目录下输出一个日志文件;如果是一个绝对路径下的文件名,则会在生成一个该绝对路径的文件
3. 只配置logging.path,在配置的目录下生成一个spring.log日志文件

解决办法

根据上边分析,我选择的解决方式如下:
去掉logging.path,直接在logging.file中配置成C:/Users/tzx/Desktop/mylog/mylog.log

markdown语法解析

问题描述

由于之前写博客时,那些博客网站基本都支持markdown语法,经过使用后,发现确实很方便,于是决定自己写的这个博客系统也使用markdown。

问题分析

markdown语法解析需要引入markdown相关的js,并使用该js中定义的方法格式化博客内容。

解决办法

引入showdown.min.js文件,同时使用如下自定义代码格式化博客内容:

var text = data.blogContent;
var converter = new showdown.Converter();
var html = converter.makeHtml(text);
document.getElementById("curcontent").innerHTML = html;

jpa关联查询的问题

问题描述

博客中实体类的初始设计是单独的userModelblogModel,如果要在显示某篇博客时显示出作者名称等信息,则需要根据blog表中的userId字段再查user表。

问题分析

jpa里边也可以自定义sql,但是总感觉这样会很麻烦。
而且从某种程度而言,jpa应该不至于连这么简单的需求都无法处理,于是经过查找,得到了关联关系的解决办法。

解决办法

blog表和user表都保持不变,在blog表中有一个字段userid用来保存作者的id。
userModel保持不变,在blogModel中userId的属性使用如下定义:

/**
* 多个博客对应一个人,关联字段bloginfo表中user_id字段
*/
@JoinColumn(name = "user_id")
@ManyToOne
private Userinfo userinfo;

@JoinColumn注解指定了关联字段,@ManyToOne声明关联关系是多对一。
之后使用jpa的查询方法,例如userDao.findAll(),进行查询时,每一条blog记录中都会带上相应的user对象,也就只需要一次查询数据库就够了。

使用thymeleaf模板后,不能返回对象给前台

问题描述

使用thymeleaf模板渲染页面的时候,spring的controller的方法只需要return一个html的页面文件名就行了,例如index.html,就写成return "index";
使用过程发现这里不是只需要写成return "index",而是必须写成这样,还必须有这个页面存在,否则报错。
例如我本来想在某个方法中返回一个blog对象给前台,但是向这个方法发起请求时后台报错如下:

org.thymeleaf.exceptions.TemplateInputException: Error resolving template 
"tzxblog/openBlog", template might not exist or might not be accessible by any of
the configured Template Resolvers

问题分析

看到上边的问题,我猜测可能是用了模板以后,会对所有return的内容进行解析渲染,但是对象是不能直接渲染成html的,因此就解析出错。
这个时候我有两种解决办法,一种是把数据放到modelMap中,然后使用类似th:text这样的方式取得数据,之后还是return回一个html页面。
但是这个地方我不想这样,因为我用了ajax请求,就想要在ajax中获取到返回的数据后进行一定的前台处理,因此就必须要找到能让我返回对象的办法,好在后来在查询的过程中,从其他地方获取到了对的解决办法。

解决办法

在需要返回对象或者普通数据的方法上加上@ResponseBody注解,有了这个注解以后,thymeleaf模板就不会再做其他的处理,也就相当于暂时和thymeleaf没了关系。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

大学算法分析与设计复习总结

大学算法分析与设计复习总结 为了拿大学的那悲剧的学分,好好弄懂以下所有知识点吧。把老师的复习的提纲,特意汇总了所有考点,方便童鞋们复习。不喜勿喷!!! 这本书是《算法设计与分析》 王红梅 ...
  • wwj_748
  • wwj_748
  • 2013-06-08 11:49
  • 13961

挖掘机技术哪家强<numberTheory><欧拉函数>

【NOIP2014八校联考第3场第2试10.5】挖掘机技术哪家强(shoberu) (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072...
  • cyc66
  • cyc66
  • 2014-10-06 19:38
  • 1180

技术型创业者容易遇到的三大问题

这是《创业杂记》的番外篇,我们一起来讨论技术型创业者容易出现的三大状况。
  • diehuan2008
  • diehuan2008
  • 2014-08-20 02:30
  • 8330

网络技术问题解答1

问题1:网络设备管理地址是啥? 答案1:你需要为网络中的交换机、路由器、防火墙等设备配置一个IP地址,后续管理员就可以通过这个IP地址连接到这些网络设备,去进行配置和维护。   问题2:CIDR...
  • cheeseandcake
  • cheeseandcake
  • 2017-05-28 20:51
  • 221

J2EE常见技术问题总结

  • 2014-02-21 16:35
  • 1.39MB
  • 下载

2015年创业中遇到的技术问题:1-10(乱码-SpringMVC-jquery-JSON等)

1.数据库表名重构。   之前受PHP等程序的影响,数据库表名喜欢用数据库的名称作为前缀,比如“p2p_account”。   在经过大量的实践之后,发现Java程序中,基本没有这个必要。   so,...
  • FansUnion
  • FansUnion
  • 2015-03-07 19:38
  • 1165

找工作遇到的其他技术问题及解答(1)

1、Group by 和 having Group by是分组查询,一般和聚合函数使用; 增加having的原因是,在where语句中是不能和聚合函数一起使用的。 2、死锁的原因以及银行家算法...
  • duomengwuyou
  • duomengwuyou
  • 2014-12-25 13:48
  • 510

Spark技术问题互动问答1

“决胜云计算大数据时代”   Spark亚太研究院100期公益大讲堂 【第一期互动问答分享】     Q1:“能否延伸想象一下,Hadoop后续版本会不会通过设计调整,具备 Spark目前所...
  • wwttz1974
  • wwttz1974
  • 2014-07-27 10:55
  • 347

针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(2)

16. Java面向对象的三个特征与含义 1 . 封装性   将对象的状态信息尽可能的隐藏在对象内部,只保留有限的接口和方法与外界进行交互,从而避免了外界对对象内部属性的破坏。   Java中使用访...
  • CCUTwangning
  • CCUTwangning
  • 2016-12-20 13:41
  • 768

针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(4)

操作系统 1. 进程和线程的区别 1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 2) 线程的划分尺度小于进程,使得多线程程序的并发性高。 3) 另外,进程在执行过程中拥有独立的内...
  • CCUTwangning
  • CCUTwangning
  • 2016-12-27 13:37
  • 271
    有问题要问?点击QQ联系我!
    有需要,qq联系我
    1160569243
    公告栏
    个人资料
    • 访问:791090次
    • 积分:10012
    • 等级:
    • 排名:第2015名
    • 原创:230篇
    • 转载:38篇
    • 译文:0篇
    • 评论:411条