玩玩
EL表达式
先搭一个tomcat 注意
1 2 3 4 5
| WEB-INF 是受保护目录,WEB-INF里面的文件只可以由servlet去访问,不能通过url地址栏去请求访问 WebRoot根目录下面的文件可以直接通过url地址栏去访问,一般的index.jsp就放这里
一般的可以把所有的页面展示的jsp,js,css,图片都放到WebRoot下面,也可以都放到WEB-INF下面,这个没有定论 放到WEB-INF下面的,也都是通过servlet去跳转的页面,都可以访问 一般的正式系统,是没有index.jsp这样的页面的,首页都是通过action去跳转请求出来的
一些比较隐私的,不愿被所有人看到的页面,可以放到WEB-INF下面,由action去控制查看权限等 实际中,放到WebRoot 下面和 WEB-INF 下面都可以的,WebRoot 下面多一点。
|
okk 我们来开动 虽然会爆红 但没有什么大的影响
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String name = "张三"; request.setAttribute("name",name);
request.setAttribute("request", "request_name"); session.setAttribute("session", "session_name"); pageContext.setAttribute("page", "page_name"); application.setAttribute("application", "application_name"); HashMap<String, String> map = new HashMap<>(); map.put("my-name", "admin"); request.setAttribute("test", map); %> 从四个作用域中搜索变量:${name} </br> <%--获取作用域--%> 从requestScope作用域中获取变量:${requestScope.request} </br> 从sessionScope作用域中获取变量:${sessionScope.session} </br> 从pageScope作用域中获取变量:${pageScope.page} </br> 从applicationScope作用域中获取变量:${applicationScope.application} </br> 从作用域中获取特殊符号变量:${requestScope.test["my-name"]}
|

禁用EL表达式
如果不想使用 EL 表达式,可以禁用 EL 表达式。禁用 EL 表达式有以下 3 种方法:
1)禁用单个EL表达式
在 EL 表达式前加 \,例如:
\${2+3}
页面输出:
${2+3}
2)禁用当前页面的EL表达式
将 page 指令中的 isELIgnored 属性设置为 true,如下:
1
| <%@ page isELIgnored="true" %>
|
3)禁用整个Web应用的EL表达式
在 web.xml 中配置 元素,如下:
1 2 3 4
| <jsp-property-group> <url-pattern>*jsp</url-pattern> <el-ignored>false</el-ignored> </jsp-propery-group>
|
EL内置对象
为了显示方便,EL 表达式语言提供了许多内置对象,可以通过不同的内置对象来输出不同的内容。EL 表达式内置对象如下:
| 内置对象 |
说明 |
| pageScope |
获取 page 范围的变量 |
| requestScope |
获取 request 范围的变量 |
| sessionScope |
获取 session 范围的变量 |
| applicationScope |
获取 application 范围的变量 |
| param |
相当于 request.getParameter(String name),获取单个参数的值 |
| paramValues |
相当于 request.getParameterValues(String name),获取参数集合中的变量值 |
| header |
相当于 request.getHeader(String name),获取 HTTP 请求头信息 |
| headerValues |
相当于 request.getHeaders(String name),获取 HTTP 请求头数组信息 |
| initParam |
相当于 application.getInitParameter(String name),获取 web.xml 文件中的参数值 |
| cookie |
相当于 request.getCookies(),获取 cookie 中的值 |
| pageContext |
表示当前 JSP 页面的 pageContext 对象 |
从以上方法可以看出,EL 表达式可以输出 4 种属性范围的内容。如果在不同的属性范围中设置了同一个属性名称,则按照 page、request、session、application 的顺序依次查找。我们也可以指定要取出哪一个范围的变量,例如:${pagesScope.name},表示取出 page 范围的 name 变量。
实例
https://y4er.com/posts/java-expression-injection/#%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E5%AE%9E%E4%BE%8B
以后遇到再说
reference
EL表达式完全攻略 (biancheng.net)