JSP信息页调试助手

时间:2011-07-02 17:24:37

标签: java debugging jsp helper

是否有人使用jsp debug helper页面可以放入任何webapp或从另一个jsp页面中包含以查看header,req和session属性?

如果可能的话,请你分享一下吗?对许多人来说这将是一个很好的帮助

2 个答案:

答案 0 :(得分:5)

  • 在您的网络应用中删除pageDebugger.jsp
  • 直接访问该页面或包含其他jsp,例如layout.jsp以在每个页面上显示此详细信息
  • 此页面列出了表格中的后续内容
    • 请求参数
    • 页面范围的属性和值
    • 请求范围属性和值
    • 会话范围属性和值
    • 应用程序作用域属性和值
    • 请求标题
    • 范围
    • 中定义的所有Spring bean
    • 在类路径上搜索资源的选项
  • 对弹簧框架的依赖是可选的,如果你不使用
  • ,请将其删除

pageDebugger.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<style type="text/css">
td {
    word-wrap: break-word;
}
</style>
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0"
    style="table-layout: fixed;">
    <colgroup>
        <col width="500">
    </colgroup>
    <tr>
        <th colspan="2">
        <h3>attributes in $paramValues</h3>
        </th>
    </tr>
    <c:forEach var="entry" items="${paramValues}">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><c:forEach var="item" items="${entry.value}"
                varStatus="status">
                <pre><c:out value="${item}" /></pre>
                <c:if test="${not status.last}">
                    <br />
                </c:if>
            </c:forEach></td>
        </tr>
    </c:forEach>
    <tr>
        <th colspan="2">
        <h3>attributes in $requestScope</h3>
        </th>
    </tr>
    <c:forEach var="entry" items="${requestScope}">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><pre><c:out value="${entry.value}" /></pre></td>
        </tr>
    </c:forEach>
    <tr>
        <th colspan="2">
        <h3>attributes in $sessionScope</h3>
        </th>
    </tr>
    <c:forEach var="entry" items="${sessionScope}">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><pre><c:out value="${entry.value}" /></pre></td>
        </tr>
    </c:forEach>
    <tr>
        <th colspan="2">
        <h3>attributes in $pageScope</h3>
        </th>
    </tr>
    <c:forEach var="entry" items="${pageScope}">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><pre><c:out value="${entry.value}" /></pre></td>
        </tr>
    </c:forEach>
    <tr>
        <th colspan="2">
        <h3>attributes in $headerValues</h3>
        </th>
    </tr>
    <c:forEach var="entry" items="${headerValues}">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><c:forEach var="item" items="${entry.value}"
                varStatus="status">
                <pre><c:out value="${item}" /></pre>
                <c:if test="${not status.last}">
                    <br />
                </c:if>
            </c:forEach></td>
        </tr>
    </c:forEach>
    <tr>
        <th colspan="2">
        <h3>attributes in $applicationScope</h3>
        </th>
    </tr>
    <c:forEach var="entry" items="${applicationScope}">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><pre><c:out value="${entry.value}" /></pre></td>
        </tr>
    </c:forEach>
    <tr>
        <th colspan="2">
        <h3>System Properties</h3>
        </th>
    </tr>
    <tr>
        <th>Key</th>
        <th>Value</th>
    </tr>
    <%@page import="java.util.Map"%>
    <%@page import="java.util.Set"%>
    <%@page import="java.util.Properties"%>
    <%@page import="java.util.Arrays"%>
    <%
        Properties p = System.getProperties();
        Set<Map.Entry<Object, Object>> set = p.entrySet();
        for (Map.Entry<Object, Object> e : set) {
    %>
    <tr>
        <td><%=e.getKey()%></td>
        <td><%="".equals(e.getValue()) ? "&nbsp;" : e.getValue()%></td>
        <%
            }
        %>
    </tr>
    <tr>
        <th colspan="2">
        <h3>Spring Beans</h3>
        </th>
    </tr>
    <%@page import="org.springframework.web.context.WebApplicationContext"%>
    <%@page
        import="org.springframework.web.context.support.WebApplicationContextUtils"%>
    <%@page import="org.springframework.core.io.Resource"%>
    <%
        try {
            WebApplicationContext springContext = WebApplicationContextUtils
                    .getWebApplicationContext(config.getServletContext());
            if (springContext != null) {
                String[] beanNames = springContext.getBeanDefinitionNames();
                Arrays.sort(beanNames);
                for (String beanName : beanNames) {
                    String className = springContext.getType(beanName)
                            .getName();
    %>
    <tr>
        <td><%=beanName%></td>
        <td><%=className%></td>
    </tr>
    <%
        }
    %>
    <tr>
        <th colspan="2">
        <h3>Spring Resources</h3>
        </th>
    </tr>
    <tr>
        <th colspan="2">
        <form><input name="resources" size="50"/></form>
        </th>
    </tr>

    <%
        String resourceNames = request.getParameter("resources");
                if (resourceNames != null) {
                    Resource[] resources = springContext
                            .getResources(resourceNames);
                    for (Resource r : resources) {
    %>
    <tr>
        <td><%=r.getFilename()%></td>
        <td><%=r.getURI()%></td>
    </tr>
    <%
        }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    %>


</table>
</body>
</html>

此外,如果您有修改web.xml的选项,请查看这些也可用于监视/配置活动的http会话属性

http://code.google.com/p/sessionmon/

http://messadmin.sourceforge.net/

答案 1 :(得分:0)

在工作中,我使用JDeveloper从IDE以调试模式运行应用程序。您可以在.jsp中插入断点并查看所有调试信息。虽然,我不是jdeveloper的忠实粉丝,但它是IDE的一个很好的功能。