Независимо от того, сколько вы пытаетесь избежать, когда вы работаете с другими разработчиками, некоторые из них по-прежнему предпочитают скриптлет и затем вставляют злой код в проект.Поэтому настройка проекта при первом знаке очень важна, если вы действительно хотите уменьшить код скриптлета.Есть несколько методов, чтобы преодолеть это (в том числе несколько фреймворков, упомянутых другими).Однако, если вы предпочитаете чистый способ JSP, используйте файл тегов JSTL.Приятно то, что вы также можете настроить главные страницы для своего проекта, чтобы другие страницы могли наследовать главные страницы
Создать главную страницу с именем base.tag под своими тегами WEB-INF /со следующим содержимым
<%@tag description="Overall Page template" pageEncoding="UTF-8"%>
<%@attribute name="title" fragment="true" %>
<html>
<head>
<title>
<jsp:invoke fragment="title"></jsp:invoke>
</title>
</head>
<body>
<div id="page-header">
....
</div>
<div id="page-body">
<jsp:doBody/>
</div>
<div id="page-footer">
.....
</div>
</body>
</html>
На этой основной странице я создал фрагмент с названием «title», чтобы на дочерней странице я мог вставить больше кодов в этуместо главной страницы.Кроме того, тег <jsp:doBody/>
будет заменен содержимым дочерней страницы
Создать дочернюю страницу (child.jsp) в папке WebContent:
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:base>
<jsp:attribute name="title">
<bean:message key="hello.world" />
</jsp:attribute>
<jsp:body>
[Put your content of the child here]
</jsp:body>
</t:base>
<t:base>
используется для указания главной страницы, которую вы хотите использовать (на данный момент это base.tag).Весь контент внутри тега <jsp:body>
здесь заменит <jsp:doBody/>
на вашей главной странице.Ваша дочерняя страница также может содержать любой тег lib, и вы можете использовать его, как и другие упомянутые выше.Однако, если вы используете здесь какой-либо код скриптлета (<%= request.getParameter("name") %>
...) и попытаетесь запустить эту страницу, вы получите JasperException because Scripting elements ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed here
.Поэтому другие люди не могут включить злой код в файл jsp
Вызов этой страницы с вашего контроллера:
Вы можете легко вызвать child.jspфайл с вашего контроллера.Это также хорошо работает со структурой распорок