ssm项目笔记一
html和jsp
含义不同
jsp是Java server pages,html是超文本标记语言
采用的技术不同
html是客户端技术,jsp是服务端技术
加载的速度不同
jsp生成的是动态网页,需要与web server进行交互,加载速度慢,html生成静态网页,加载速度快
LoggerFactory.getLogger用法
1 | public class SimpleCharVerifyCodeGenImpl implements IVerifyCodeGen { |
LoggerFactory.getLogger()的作用是使用指定类初始化日志对象
为什么要使用static和final?
使用static修饰,不管这个对象被new了多少次,也只会在类加载时创建一次,所以它在内存中是唯一的,避免了重复创建带来了内存浪费
使用final修饰,表明这个变量不允许被重新赋值,如果重新赋值且字节码对象被篡改,则显示的日志信息与类信息不匹配
${pageContext.request.contextPath}
${pageContext.request.contextPath}是El表达式,EL 全名为Expression Language
它的作用是帮助我们去匹配上下文路径,不需要再手动去写死了
1 | <script type="text/javascript" src="${pageContext.request.contextPath}/lib/jquery-3.4.1/jquery-3.4.1.min.js"></script> |
再如
1 | <form class="layui-form" action="${pageContext.request.contextPath}/loginIn" method="post"> |
pageContext
在Javaweb中一共四个域对象,其中servlet中可以使用的是request,session,application三个对象,而在jsp中可以使用pageContext,request,session,application四个域对象
pageContext也是域对象,它的范围是当前页面。它的范围也是四个域对象中最小的!
代理其他对象
还可以使用pageContext来代理其它3个域对象的功能,也就是说可以使用pageContext向request、session、application对象中存取数据,例如:
1
2
3
4
5
6
7 pageContext.setAttribute("x", "X");
pageContext.setAttribute("x", "XX",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("x", "XXX",PageContext.SESSION_SCOPE);
pageContext.setAttribute("x", "XXXX", PageContext.APPLICATION_SCOPE);
Controller层方法的返回值
如果是controll层方法是void类型,这种一般返回值是视图(view),通过request或response
如果controll层方法不是void类型,这种一般返回的是json数据,一般都会return 数据
以下代码的作用是将生成的验证码图片输出到 HTTP 响应中
1 |
|
以下返回值类型是string,需要return
1 |
|
总结就是说如果返回值是void类型,会搭配request和response使用;否则会搭配return使用
@Param注解
这个注解的作用就是为sql语句中参数赋值而服务的
@Param的作用就是给参数命名,比如在mapper里面某方法A(int id),当添加注解后A(@Param(“userId”) int id),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。在sql语句中,通过#{userId}进行取值给sql参数赋值。
注意
当不使用@Param注解时,参数只能有一个,并且是JavaBean。在sql语句中只能引用JavaBean的属性。