开发者

App Engine JSP without code inside

Is it possible to use J开发者_StackOverflow社区SP sort of as a template without having code inside?

Values should be inserted into a hash map, and the JSP can read the values from there.

Is it possible to code like this in a GAE application, or do you need external tools/frameworks to accomplish this?

In other words, is it possible to pass values from the servlet handler to the JSP template?


Next to JSP there's also the Servlet API.

If the map is request or session specific, then create a class which extends HttpServlet and implement doGet() method like follows:

Map<K, V> map = createItSomehow();
request.setAttribute("map", map);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

Register the Servlet in web.xml on a certain url-pattern and invoke an URL matching this pattern.

This way the map is available as ${map} in JSP. Here's an example which iterates over the map using JSTL c:forEach tag:

<c:forEach items="${map}" var="entry">
    Key: ${entry.key}, Value: ${entry.value}<br>
</c:forEach>

If the map is an application wide constant, then rather implement ServletContextListener and do the following in contextInitialized() method:

Map<K, V> map = createItSomehow();
event.getServletContext().setAttribute("map", map);

Register the ServletContextListener in web.xml as follows:

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>

and it will be executed on webapp's startup. The map is then available in JSP by ${map} as well.

See also:

  • How to avoid Java code in JSP
  • Hidden features of JSP/Servlet
  • Coreservlets.com JSP/Servlet tutorials
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜