1、application.properties里面基础配置?
2、dao包下的UserMapper.java写什么?
3、resource包下有user-mapper.xml文件里面写什么?
4、动态sql实现的关键代码?mapper映射配置文件中的常见参数(id,resulttype)?
5、在标签中,keyProperty属性的作用是什么?
6、使用mybatis的步骤
7、如何设置代码的日志级别
8、用户表的结构
9、讨论帖表的结构
10、在方法参数里面的@Param(“”)注解的作用?
11、查询帖子的mapper接口书写?
12、mapper的映射配置文件中的mapper标签中的属性namespace是什么意思?
13、含if标签的动态sql书写关键部分?
14、在test类上的注解
15、在查询帖子时,如果仅仅查帖子表,在页面上显示的并不是用户id,而是具体的用户名,这应该怎么做?
16、resources下面放的是什么?
17、关于@RequestBody和@ResponstBody
19、前后端整合不要忘记什么?
19–1.常见th标签
20、sql中的limit语句中,limit x,y 代表从数据库中的第x+1行开始查,向下查y行,那么x如何用当前页和每页条数表示呢?
21、关于用户头像和帖子不在一张表时,封装的步骤?
22、在Controller接口中的参数,为什么该参数可以直接被前端页面调用?
23、前端点击按钮,如何实现路径改变?
24、报错:无效的源发行版
25、项目调试技巧
26、如何在控制台打印自己输入的日志?
27、版本控制(待完善)
28、关于jar包导入了却无法引用的问题?
29、项目结构分析?
30、邮箱功能开发步骤
32、如何利用thymeleaf模板发邮件?
33、点击前端文字,页面跳转的原理理解?
34、thymeleaf实现代码复用?
35、return “/index”有什么用?
36、随机字符串的生成方法?
37、MD5加密方法?
38、网站域名配置
39、如何在注册时将用户的密码进行加密?
40、字符串中要想出现随机数字,该如何做?
41、注册时发送验证邮件分析?
43、若前端传入的username,user的实体类叫name,Controller中的参数User实体类有用吗?
44、注册功能分析?
45、代码层次如何判断注册成功还是失败?
45、当点击注册后,注册失败时,如何保留输入框内的值?
46、如何给标签动态的加属性?
47、某个类要用常量,怎么做?
48、@PathVariable注解作用?
49、某属性如何获取配置文件中的变量的值?
50、Cookie和Session的区别?
53、如何利用注解写sql
54、如何在注解里面书写动态sql
55、常见sql复习
56、如何设置过期时间
57、如果前端需要显示错误信息,如密码错误,该如何操作?
58、Kaptcha配置类的书写?
59、为什么要将验证码的文字放入到session当中?
60、如何在Controller中获得session?
61、如何将图片输出到浏览器?
62、如何在Controller中获得response,如何获得输出流?
63、前端刷新验证码实现
64、前端页面如何获得request中的数据?
65、如何获得页面中的cookie?
66、拦截器中的方法?
67、显示登录信息的流程?
72、常用的4个元注解及对应的功能?
84
什么是事务?
85
常见并发异常?
1、application.properties里面基础配置?
配的有数serverProperties,数据源,mybatis等相关配置
2、dao包下的UserMapper.java写什么?
里面写的是一些user的接口
3、resource包下有user-mapper.xml文件里面写什么?
里面写的是sql
4、动态sql实现的关键代码?mapper映射配置文件中的常见参数(id,resulttype)?
在mapper的映射配置文件中,动态sql关键代码:
里面的id指的是方法名,resulttype代表返回数据类型,要写全限定名,但在配置中已经配置了包名,故可以简化。用#{}引入方法的里面的参数。
利用这可以实现引用sql
5、在标签中,keyProperty属性的作用是什么?
该例子中
的keyProperty是该表中的主键,便于获取数据库自动生成的id到实体类
6、使用mybatis的步骤
编写配置文件,创建对应实体类,创建mapper接口,创建mapper映射配置文件,将Mapper接口注入到某类中使用
7、如何设置代码的日志级别
logging.level.com.nowcoder.community=debug
8、用户表的结构
id,用户名,密码,盐,邮箱,类类型,状态,激活码,头像,创建时间
9、讨论帖表的结构
帖子id,发帖用户,帖子名,帖子内容,帖子类型,帖子状态,创建时间,帖子评论数,帖子分数
10、在方法参数里面的@Param(“”)注解的作用?
作用:给参数起别名,
使用场景:如果只有一个参数,并且在里使用,则必须加别名.
11、查询帖子的mapper接口书写?
1个动态代理接口方法作用是根据用户id分页查询帖子
1个动态代理接口方法作用是根据用户id查询用户帖子数量
12、mapper的映射配置文件中的mapper标签中的属性namespace是什么意思?
namespace里面写上对应的mapper接口,全限定名
13、含if标签的动态sql书写关键部分?
如果传入的id不是0,则用id查。如果为0,则不用id查,查全部
and …
14、在test类上的注解
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes=启动类类名.class)
这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试
当一个类添加了注解@Component,那么他就自动变成了一个bean,就不需要再Spring配置文件中显示的配置了。把这些bean收集起来通常有两种方式,Java的方式和XML的方式。当这些bean收集起来之后,当我们想要在某个测试类使用@Autowired注解来引入这些收集起来的bean时,只需要给这个测试类添加@ContextConfiguration注解来标注我们想要导入这个测试类的某些bean。
15、在查询帖子时,如果仅仅查帖子表,在页面上显示的并不是用户id,而是具体的用户名,这应该怎么做?
两种方法:第一种是通过sql关联查询。第二种是再创建一个service,在这个service里面查询用户表里面用户的名字,最后将两个service到Controller,Controller返回封装的数据。
16、resources下面放的是什么?
mapper文件,静态资源,静态页面,application.properties,其他配置文件
17、关于@RequestBody和@ResponstBody
@RequestBody(required=false)
使用json传数据,能将json数据封装到对象里面,需要将请求改为post,(即接收页面传入的json数据)
@ResponseBody
向页面返回json数据
19、前后端整合不要忘记什么?
(1)声明模板引擎
(2)配置顶部和底部路径的相对路径
用:th:href =“@{}” 让它去static下面去找对应的静态资源。即所有的相对路径的资源都用这种方式处理
19–1.常见th标签
遍历: th:each=“map:${discussPosts}”
引入图片 th:src=“${}”
引入文字 th:utext=“${}”
判断 th:if=“${}”
日期格式化 …
页面跳转 th:href=“${}”
20、sql中的limit语句中,limit x,y 代表从数据库中的第x+1行开始查,向下查y行,那么x如何用当前页和每页条数表示呢?
–》x=(current - 1) * limit
实战:查询第三页的数据:limit (3-1)*limit
21、关于用户头像和帖子不在一张表时,封装的步骤?
取得帖子的list集合,每次遍历时,从list集合中取出1个放到map集合里面,取user放到map集合中,再将map集合放到List
22、在Controller接口中的参数,为什么该参数可以直接被前端页面调用?
如Page参数:在Controller里面,方法调用前,SpringMVC会自动实例化Model和Page,并将Page注入Model.所以,即使不传递page对象,在thymeleaf中可以直接访问Page对象中的数据(因为page在model里面,而传递了model)
23、前端点击按钮,如何实现路径改变?
@{
p
a
g
e
.
p
a
t
h
(
c
u
r
r
e
n
t
=
{page.path}(current=
page.path(current={page.current+1})}这改变地址栏,从而实现传递参数
通过th:href
24、报错:无效的源发行版
解决:把下图的12改成8即可,还要改structe里面的
25、项目调试技巧
①将断点设置到哪,debug时就从哪个位置启动
②然后要在浏览器上访问,断点打到方法里面。f8代表下一行,f7表示进入当前行的当前方法的内部。可以看到当前这一行前代码中参数的值(鼠标放到参数的上方或者看方法的后面)
③若想要从蓝色处跳到红色处,按f9
看变量的详细信息时,在下面展开看
在这管理断点
26、如何在控制台打印自己输入的日志?
创建logger对象:
private static final Logger logger = LoggerFactory.getLogger(本类.class);
这样有错误信息的化,能以日志的形式打印出来:
若启动info级别日志,只会显示info,warn,error级别的日志
27、版本控制(待完善)
查看用户名和邮箱:
将代码提交到本地仓库:
将代码上传到远程仓库:
生成密匙并配置(百度),创建仓库,在git里面创建远程仓库别名
28、关于jar包导入了却无法引用的问题?
选这个,清除所有的包,然后关闭idea,然后打开,刷新maven
29、项目结构分析?
java
main------ resources
src----- test
pom
30、邮箱功能开发步骤
设置邮箱(打开SMTP服务),导入SpringEmail的jar包(去https://mvnrepository.com/搜),邮箱参数配置application.properties,编写客户端类MailClient,测试test
31、邮箱客户端类的书写?
1.通过JavaMailSender对象获取MimeMessage对象
2.通过MimeMessage对象获取MimeMessageHelper对象
3.通过MimeMessageHelper对象设置发件人,收件人,主题,内容
4.通过JavaMailSender对象发送邮件
32、如何利用thymeleaf模板发邮件?
(1)编写html页面作为发送的邮件,页面中可以包含动态的参数
(2)①创建context对象
②通过context对象设置变量
③利用templateEngine将context对象发送到邮件模板
④利用mailClient发送邮件
33、点击前端文字,页面跳转的原理理解?
点击“首页”按钮后,页面的链接改变,访问对应的servlet,在servlet里面的return实现页面传值和跳转
34、thymeleaf实现代码复用?
th:fragment=“源name”
th:replace=“源文件::源name”
35、return “/index”有什么用?
①实现页面跳转
②实现传值(传的有model,还有方法的参数,其中方法的参数被封装到了model里面了)
36、随机字符串的生成方法?
UUID.randomUUID().toString().replaceAll(“-”,“”);
37、MD5加密方法?
DigestUtils.md5DigestAsHex(key.getBytes());
38、网站域名配置
domain
39、如何在注册时将用户的密码进行加密?
①设置用户的盐
②设置用户的密码,用户的密码来自加密的密码和盐的拼接
40、字符串中要想出现随机数字,该如何做?
user.setHeaderUrl(String.format(“http://images.nowcoder.com/head/%dt.png”, new Random().nextInt(1000)));
利用(String.format(“xxx%dtxx”),i)
41、注册时发送验证邮件分析?
关于这个url:点这个链接时,用户访问这个链接,调用对应的servlet并传递用户相关参数
42、什么时候用get,什么时候用post请求?
浏览器向Controller提交数据时,用Post,其他用get
43、若前端传入的username,user的实体类叫name,Controller中的参数User实体类有用吗?
答:没用,传入的和实体类的属性要对应才可以直接在参数里面定义实体类user
44、注册功能分析?
点击注册按钮—>调用Controller(/register)—>调用UserService实现验证,注册,发送激活邮件
—>若没有错误信息,则携带正确信息,跳转到等待激活页面,此时用户点击邮件链接,则激活成功
—>若有错误信息,则携带错误信息,仍跳转到注册页面,将错误在页面上显示
45、代码层次如何判断注册成功还是失败?
看返回的map集合是否为空
46、当点击注册后,注册失败时,如何保留输入框内的值?(待完善)
47、
46、如何给标签动态的加属性?
th:class="||"代表动态拼接属性
47、某个类要用常量,怎么做?
实现常量类的接口
48、@PathVariable注解作用?
获取路径中的值
49、某属性如何获取配置文件中的变量的值?
50、Cookie和Session的区别?
51、登录凭证
52、两个Controller的请求路径可以重复,但请求方式不能重复
53、如何利用注解写sql
这样的话,可以不用写mapper的映射配置文件了
@insert({})
注意:@Options注解里面的操作
54、如何在注解里面书写动态sql
55、常见sql复习
insert into table( , , ,) values( , , ,)
update table set …=… where …=…
56、如何设置过期时间
如传参3,代表信息保持3秒
则将过期的具体时间放到凭证表里面
57、如果前端需要显示错误信息,如密码错误,该如何操作?
service:创建map集合,将错误信息放到map集合中,return map
58、Kaptcha配置类的书写?
@Configuration注解和@Bean注解联合使用,@Bean注解放方法上面
Properties---->DefaultKaptcha---->Config---->DefaultKaptcha.set(config)---->return DefaultKaptcha
59、为什么要将验证码的文字放入到session当中?
因为session保存在服务器,在其他的Controller能够调用并进行判断验证码是否正确
60、如何在Controller中获得session?
HttpSession session
61、如何将图片输出到浏览器?
调用这个Controller,就会返回图片
response.setContentType(“”)–>OutputStream–>ImageIO.write()
62、如何在Controller中获得response,如何获得输出流?
HttpServletResponse
response.getOutputStream
63、前端刷新验证码实现
这里用到了假的路径切换,点击刷新验证码标签,调用函数,src路径改变,实现验证码的切换
64、前端页面如何获得request中的数据?
用${param.}来获取参数
65、如何获得页面中的cookie?
用@CookieValue注解获取
66、拦截器中的方法?
当访问被拦截的路径时,会调用这些方法
preHandle()—》在Controller之前执行
postHandle()—》在Controller之后执行,模板之前执行
afterCompletion()—》在Controller,模板引擎之后执行
67、显示登录信息的流程?
这套逻辑需要反复使用,故需要放到拦截器中。
68、HostHolder类的作用?
持有用户信息,用于代替session对象。
HostHolder是线程隔离的
69、上传文件需要注意的点?
①请求必须是post请求
②表单需要加上
③
70、
这里面的输出流被springmvc管理,会自动关闭
而输入流要自己手动关闭
71、
关于头像上传步骤:点击上传头像按钮,在本地的指定位置下存储上传的文件,修改用户的headerurl(其中,用户头像的url是一个请求,在前端页面要显示时,访问该路径,输出图片)
72、常用的4个元注解及对应的功能?
Target表示注解的位置
Retention表示注解生效的时间
Document表示注解是否在api文档中显示
Inherited表示该注解是否可以被继承
73、
74、利用前缀树过滤敏感词
前缀树特点:
①前缀树的根节点不包含任何字符,其余节点仅包含一个字符。
②当前节点的字符串是从根节点遍历而来的。
③每个节点的子节点构成的字符串不能重复。
④将所有的叶子节点标记为敏感词。
前缀树举例:
过滤敏感词算法演示:
指针1用来指向字符串中的当前字符在树中
指针2为敏感字符的起始
指针3为敏感字符的结束
找到敏感词后,3指针向后移动一位,2指针指向3指针的位置,1指针指向root
75、该注解的作用?
表示调用该类的构造方法之后,该方法会自动的被调用
76、放在try里面的输入输出流,会在catch后面自动加上finally关闭掉,不用手动关闭
其中该操作能获取编译后的class目录下名为sensitive-words.txt文件的字节流
77
如何将字节流转换为缓冲流?
字节流–》字符流–》缓冲流
78
如何获得某个字符串中某个位置的字符
79
字符串需要经常追加结果时,用什么类型?
80
如何判断某个字符是否是普通字符?
81
JQuery实现异步请求通用模板?
注意:实现异步,主要的还是靠这个前端代码
82
如何将文本中的标签类信息替换掉(转义HTML标记)?
83
注意:加@是为了不用写项目的固定路径,加两个||是为了拼接帖子的id
84
什么是事务?
85
常见并发异常?
①第一类丢失更新
②第二类丢失更新
③脏读
④不可重复读
⑤幻读
86
事务隔离级别
87
乐观锁和悲观锁
88
spring管理事务方式
89
如何给某个方法上用上事务管理(声明式事务)?
利用该注解实现
前面是隔离级别,后面是传播机制。
90
事务传播机制?
当方法一加上事务注解时,方法二(大)调用方法一(小)的注解,那么应该用谁的注解呢?
REQUIRED:支持方法二(外部事务)
REQUIRES_NEW:支持方法一
NESTED:方法一独立提交和回滚
91
将字符串转换为数字
92
如何给某个方法上用上事务管理(编程式事务)?
注入事务模板,然后调用方法,执行方法即可
93
关于评论的字段说明?
entity_type:表示评论的对象类型(如对用户的评论,对帖子的评论)
entity_id:表示评论的对象的id(如用户的id,帖子的id)
target_id:表示回复的对象的id(是该表的id)
94、增方法里面一般写实体,删改查方法里面不写实体,方法的首字母小写
95、关于如何判断前端页面存在的对象有哪些
当html页面显示的是具体内容时,这些内容往往来自某个实体(极为重要),即从前端,去想后端
96、回复帖子功能分析?
(所有的评论都在一张表)
当用户发布评论时,前端向后端传的有评论对象类型,评论对象id,目标用户的id(均通过hidden标签),后端的Controller用Comment实体和PostId接收
97、Mybatis之foreach标签的使用
98、异步重点代码分析
function send_letter() {
$(“#sendModal”).modal(“hide”);//隐藏发送框
var toName = $(“#recipient-name”).val();//获得私信对象
var content = $(“#message-text”).val();//获得私信内容
$.post(//异步请求
CONTEXT_PATH + “/letter/send”,//请求路径
{“toName”:toName,“content”:content},//请求参数
function(data) {//接收后端的数据
data = $.parseJSON(data);//将数据转为js对象
if(data.code == 0) {
$(“#hintBody”).text(“发送成功!”);//判断后端发送成功与否
} else {
$(“#hintBody”).text(data.msg);
}
$(“#hintModal”).modal(“show”);//显示提示框
setTimeout(function(){
$(“#hintModal”).modal(“hide”);
location.reload();
}, 2000);//2秒后隐藏提示框
}
);
}
99、关于消息未读和已读的功能实现逻辑
用户访问和某个人私信页面时,后端获取所有用户的私信集合,并判断所有私信的状态,如果是未读的私信,则改为已读。否则不用变
100、关于统一处理异常
业务层和数据层将异常都抛到了表现层,故在表现层统一处理异常
101、统一异常处理时,错误页面要放到templates下,包名要叫error,页面名要为错误状态
102、
103、
表示只扫描带有Controller注解的bean
104、后端如何判断某次请求是普通请求还是异步请求?
105、当Controller发生异常时,会自动访问这个方法,记录日志并实现页面重定向
106、关于AOP
AOP是一种编程思想
额外定义组件(切面),该组件可对多个模块实现某个功能,并且不嵌入模块(用织入方法)
其中的切面
Pointcut:代码织入的位置
Advice:织入的具体位置和逻辑
107、AOP的实现
108、动态代理的方式
109、Pointcut分析
代表: 返回值,包,类,方法,参数
110、Redis概念入门
111、Redis命令入门
①切换库 select 2 (切换到第三个库)(共15个)
②清空库 flushdb
③strings:key value
④hashes:key (name ,value)
⑤lists :key (value,value,value)
⑥sets:key (value,value,value) 不重复
⑦sorted sets:key (score value score value)
112、Spring整合redis步骤
113、