我是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") + " " + 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");
}
}
}
答案 0 :(得分:0)
如果数据与会话无关,但对于请求最好将它们存储在请求中。
您只需要使用对请求的引用替换对会话的引用,它就可以工作(在jsp和servlet上也是如此)。
此外,使用它代替以下
会很有用<% out.print(session.getAttribute("magiSts")) %>
这个等效的代码(我也用请求替换了会话)
<%= request.getAttribute("magiSts") %>
或
${magiSts}