如何从servlet设置头jsp页面字段?

时间:2016-05-11 15:48:40

标签: java jsp servlets

我是JSP,Servlet技术的新手。我正在使用JSP,Servlets开发示例演示应用程序,其中我使用的是header.jsp文件,我将其包含在许多屏幕中。

header.jsp有8个字段,应根据搜索到的案例编号和检索到的详细信息设置其值。

我在google上搜索了一种设置header.jsp字段值的方法。但我没有办法。所以最后我使用了session,我在会话中设置了我希望在标题中显示的字段。我每次搜索一个案例时都会初始化这些字段。

我知道这不是一个好习惯。但我没有得到正确的方法。有人可以为此提出一个好方法吗?

header.jsp中:

 <body>
<div style="background-color:#94BFA6;">
    <table>
        <tr>
            <td width = "15%" class="label"> Case Name </td>
            <td width = "20%"> <% out.print( session.getAttribute("caseNumber") + "&nbsp;&nbsp;&nbsp;  " + session.getAttribute("caseName")); %> </td>
            <td width = "10%" class="label"> Magi </td>
            <td width = "15%"> <% out.print( session.getAttribute("magiSts")); %></td>
            <td width = "10%" class="label"> Language </td>
            <td width = "15%"> <% out.print( session.getAttribute("language")); %></td>
            <td width = "10%" class="label">Office Number</td>
            <td width = "15%"><% out.print( session.getAttribute("officeNumber")); %></td>
        </tr>
        <tr>
            <td class="label">Cash</td>
            <td><% out.print( session.getAttribute("cashSts")); %></td>
            <td class="label">Food Stamps</td>
            <td><% out.print( session.getAttribute("foodStampSts")); %></td>
            <td class="label">Medi-Cal</td>
            <td><% out.print( session.getAttribute("medicalSts")); %></td>
            <td class="label">File</td>
            <td><% out.print( session.getAttribute("file")); %></td>
        </tr>
    </table>
</div>
</body>

在SearchServlet.java中我正在设置会话变量:

public void initHeaderFields(String caseNum){

    if(!caseNum.isEmpty()){
        ArrayList<String> parms = new ArrayList<String>();
        parms.add("S");
        parms.add(caseNum);
        parms.add(getCurrentDate());

        ResultSet rs = conn.runStoredProc("DC001R",parms);
        try{
            if(rs.next()){
                session.setAttribute("caseNumber", rs.getString("CS_CSN_NUM").trim());
                session.setAttribute("caseName", rs.getString("CS_CASE_NAME").trim());
                session.setAttribute("language", getLanguage(rs.getString("CS_PRIM_LANG").trim()));
                session.setAttribute("officeNumber", rs.getString("CS_CASH_OFF_NUM").trim());
                session.setAttribute("magiSts", getAppStatus(rs.getString("CS_CC_STS").trim()));
                session.setAttribute("cashSts", getAppStatus(rs.getString("CS_CASH_STS").trim()));
                session.setAttribute("foodStampSts", getAppStatus(rs.getString("CS_FS_STS").trim()));
                session.setAttribute("medicalSts", getAppStatus(rs.getString("CS_MC_STS").trim()));
                session.setAttribute("file", getAppStatus(rs.getString("CS_CASH_FILE").trim()));
            }
            rs.close();
        }
        catch(SQLException e){
            e.printStackTrace();
            System.out.println("error while initializing header page");
        }

    }

}

1 个答案:

答案 0 :(得分:0)

如果数据与会话无关,但对于请求最好将它们存储在请求中。

您只需要使用对请求的引用替换对会话的引用,它就可以工作(在jsp和servlet上也是如此)。

此外,使用它代替以下

会很有用
<% out.print(session.getAttribute("magiSts")) %>

这个等效的代码(我也用请求替换了会话)

<%= request.getAttribute("magiSts") %>

${magiSts}