类比表格
| Struts2 | SSM | 功能说明 |
|---|---|---|
| struts.xml | spring-mvc.xml | struts2/spring-mvc配置 Struls2是一个请求一个Action,SpringMVC是单例模式的 |
| struts-*.xml | 前端控制器,指定前端请求进入那个Action/Controller 返回什么字符串,就返回对应jsp | |
| Manager | Service | 服务 |
| ManagerImpl | ServiceImpl | 服务实现 |
| Mapper | Mapper | 数据层(一样) |
JSP
四个域对象:
| 域对象名称 | JSP内置对象名称 | EL名称 | 作用范围 |
|---|---|---|---|
| pageContext | Page | PageScope | 只能在当前jsp页面中使用(当前页面) |
| request | Request | RequestScope | 同一个请求开始到结束(包括转发) |
| session | Session | SessionScope | 当前会话,浏览器打开到关闭(私有的) |
| application | Application | ApplicationScope | 同一个web应用中,应用从启动到停止(全局的) |
域对象作用
保存数据 和 获取数据 ,用于数据共享。
EL表达式的查找顺序
page => request => session => application
(就近原则)
域对象方法
| 方法名 | 作用 |
|---|---|
| setAttribute("name",Object) | 保存数据 |
| getAttribute("name") | 获取数据 |
| removeAttribute("name") | 清除数据 |
EL的隐式对象(重点)
| 隐含对象 | 描述 |
|---|---|
| pageScope | page作用域 |
| requestScope | request作用域 |
| sessionScope | session作用域 |
| applicationScope | application作用域 |
| param | Request对象的参数,字符串 |
| paramValues | Request对象的参数,字符串集合 |
| header | HTTP信息头,字符串 |
| headerValues | HTTP信息头,字符串集合 |
| initParam | 上下文初始化参数 |
| cookie | Cookie值 |
| pageContext | 当前页面的pageContext |
与输入相关的隐含对象有两个:param和paramValues,它们是EL中比较特殊的隐含对象。
- 例如我们要取得用户的请求参数时,可以利用下列方法:
- request.getParamster(String name)
- request.getParamsterValues(String name)
- 在EL中则可以使用param和paramValues两者来取得数据。
EL表达式的运算符
1.EL表达式运算符有哪些
| 类别 | 运算符 |
|---|---|
| 算术运算符 | +、-、*、/ 或 div、%或 mod |
| 关系运算符 | = = 或 eq、!= 或 ne 、< 或 It、>或 gt、<=或le、>= 或 ge |
| 逻辑运算符 | &&或and、 |
| 其他运算符 | Empty运算符、条件运算符、()运算符 |
EL会自动类型转换:${param.count + 20} 如果count是string,则结果会被转为number
2.EL最常用的表达式
- 为空判断:
${empty param.name} - 三元运算:
${A?B:C} - 算法运算:
${A*(B+C)}
<jsp:useBean id="Person" class="com.example.Person"></jsp:useBean>
<jsp:serProperty preperty="name" value="enlin" name="person" />
<jsp:serProperty preperty="age" value="18" name="person" />
EL表达式和ES6模板字符串冲突
EL表达式也是使用 $ 符号来插入变量的,在js中若要使用${}获取到js对象,则要在反撇号中给$符号进行转义\${document.body.scrollTop}。
例如:
console.log(`document.body.scrollTop is: \${document.body.scrollTop}`)
// -----------
function formatCustomerId(val, row, index) {
return `<a href="#" onClick="rowClickFn(\${index})">操作</a>`
}
<% %>
<%
String rootPath = request.getContextPath();
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
---
console.log(<%= basePath %>)
- 不带等号:
<% %>用于执行 Java代码 - 带等号:
<%= rootPath %>带等号,因为它是一个 EL表达式,会被渲染为值。
