想抄人家的网站
1 | wget [参数列表] [目标软件、网页的网址] |
-r 递归抓取
-k 抓取之后修正链接,适合本地浏览
-E 增加html扩展名
具体的参数名称去看man指令吧
lombok可以用注解生成Setter和Getter函数,从而简化代码量
如果我想让某个参数有2种赋值方式,比如Integer类型但loginIp,
1 | @Getter |
在使用了@Setter注解后,此时会隐性生成该函数
1 | public void setLoginIp(Integer loginIp) { |
如果我此时想有一种String的赋值函数,同名不同参, 此时就要手动再写一遍setLoginIp(Integer loginIp) 不然该函数不存在
1 | public void setLoginIp(String loginIp) { |
结论: lombok只对函数名进行检测,如果存在了setLoginIp的函数名,@Setter注解就不会再生成
在Java/JSP/JavaScript中都有Date类型
Date所在地 | Date类型 |
---|---|
Java中Date | java.util.Date |
JSP中fmt:formatDate | JSP标签,可接收java.util.Date |
JS中Date | JavaScript的Date对象和java.util.Date没关系 |
JavaScript中的Date虽然和Java没一毛钱关系,但是也可以用java.util.Date进行直接初始化
从前端可以通过字符串的形式发送Date到后台,然后使用Spring的参数绑定接收
JS请求参数
1 | {"addDate":"2016-08-01"} |
Spring参数绑定接收
1 | @DateTimeFormat(pattern = "yyyy-MM-dd") |
通过Model放入JSP
1 | model.addAttribute("addDate",addDate); |
JSP中格式化取出,如果不进行格式化,是输出的Date.toString()的字符串
1 | <span> |
如果是通过Jquery的Ajax发送请求得到返回的Date类型,在JS中会被接收成一个JavaScript的Date
比如2016-08-08 15:57:45这个日期
1 | testDate:Object |
其中不便于让人理解的是 month 和 year 的数值,在JS中
在JSP中,如果直接取值 ${addDate} 得到是Date.toString()的输出字符串
1 | Wed Jul 06 00:00:00 CST 2016 |
可以通过该字符串实例化一个JavaScript的Date对象,例如
1 | var date = new Date("${addDate}"); <====JSP文件中的样子 |
JavaScript的Date 可以直接用Java的Date字符串进行实例化 ,其数据结构为
1 | var Date = { |
对于其中的参数提供了各种Get方法,其中需要注意的有以下几个
Spring会将提交的参数绑定到同名的参数上,包括Object内部的参数,详情参见教程Spring参数绑定
如果参数绑定出错,返回的错误代码是400,比如input输入了一个String,结果Java中同名参数是Integer类型 所以说在书写的过程中,如果碰到400错误,就可以肯定是参数传递出了问题
例如用户性别分为男女,而数据库想采用0,1的方式存储,可以使用Spring提供的Formatter、Converter来完成这项工作
如果前端的input什么都不写进行提交,Spring会根据参数的Java类型不同绑定为不同的结果
参数Java类型 | 绑定结果 |
---|---|
String | “”空字符串 |
Integer | null |
可以使用Spring的注解
1 | @DateTimeFormat( pattern = "yyyy-MM-dd" ) |
接受日期类型,其中pattern是前端日期的字符串格式,有些文章中提到由于该注解用到了Joda.time的包,所以要引入 我测试了一下,并不需要
关于前后端日期的总结参考文章Java,JSP,JS中的Date
同Java中的import文件一样,我们知道JSP其实最后也是Java文件,所以可以使用page标签里的import加载Java文件
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" import="com.company.project.Constants" %> |
然后在Jsp中就可以使用Java代码快取值
1 | <%=Constants.SERVICE_USER_STATUS_FLAG_NORMAL%> |
或者赋值给JSP局部变量
1 | <c:set var="userRoleSu" value="<%=Constants.SERVICE_USER_STATUS_FLAG_NORMAL%>"/> |
Spring把结束逻辑结果传给JSP界面,有两种方法
由于JSP天生自带session对象,可以通过在后台放入session然后再通过session取出,但是这个和Spring没什么关系,是服务器容器的一种机制
从Controller模型转入JSP页面有两种方法
1 | @RequestMapping |
根据以上举例,根据不同方式传参数进入JSP的方法包括
不管使用哪种方式,JSP取数据的方式都是 ${attributeName} 根据以上代码就是
1 | ${object} |
ModelMap 是原本用于传递参数进入JSP页面的 类
ModelAndView 是一个类,其是对 ModelMap 和 View接口 一个封装,内部包含一个ModelMap的参数,其addObject方法,就是给内部的ModelMap添加参数
Model 是一个接口,其实现类是 ExtendedModelMap 在Spring的2.5.1版本之后添加进来的
在2.5.1版本之后Spring使用的已经是 ExtendedModelMap 其继承于ModelMap,对Model接口进行了实现,而MdelMap是2.0版本的加进来的
1 | public class ExtendedModelMap extends ModelMap implements Model |
因为ModelMap是其基类,所以说使用ModelMap还是有效的,但秉承着用新不用旧的原则
推荐使用 Model 接口作为返回值为String类型函数的入参数
Spring提供的注解有4个,方便用户管理不同职责的Bean
根据以上四个注解,Spring理想化的把后台服务进行了分层,他们之间可以通过@Autowired进行 依赖注入
PS:值得一提的是@Resource并不是Spring的注解,而是Java源生提供的
Spring四个逻辑注解并没有什么绝对的区别,他们是不管你放在代码的哪一层,都可以被扫描,所以才会有Spring和SpringMVC配置冲突倒是事务失效,就是因为视图层的SpringMVC秒扫了逻辑层的@Service注解
对于Maven来讲,打包成War包需要在Pom.xml里进行设置,参考Maven讲解
1 | <project> |
首先要明白,一个Servlet的Webapp工程由以下三部分组成,位于 src/main/ 的目录下
相关知识点参考 Java的目录结构和 webapp是什么
打包开始后Servlet会将java目录和resource目录的东西放入webapp,以下是参考
打包前目录 | 打包后目录 |
---|---|
src/main/java/com.company.project/ClassBean.java | WEB-INF/classes/com/company/project/ClassBean.class |
src/main/resources/spring-mvc.xml | WEB-INF/classes/spring-mvc.xml |
src/main/webapp/WEB-INF/web.xml | WEB-INF/web.xml |
从以上参考可以看出,Java源文件会被变异成class放入一个classes的目录,而resources里的东西也会直接放入classes这个目录
这个classes的目录就是一个参考点,可以在xml的配置文件里用classpath表示
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true