我有一個電子郵件實用程序類,它是由我的所有內部網Web應用程序共享的,這些應用程序通過電子郵件將員工忘記的密碼(以及該類被複制到每個Web應用程序中)。我需要用適當的主題行,回覆聯繫人,應用程序名稱等來標記與調用它的應用程序相匹配的電子郵件。Java Web應用程序web.xml參數到POJO
我能夠將這些參數作爲參數傳遞,但我的做法是在登錄網頁的頁眉中包含initialize.jsp
。
<% request.setAttribute("siteEmail", "[email protected]<domain>.com");
request.setAttribute("siteName", "Commitment Report Database");
request.setAttribute("sitePOCEmail", "[email protected]<domain>.com");
%>
這些請求參數然後由一個Struts類似動作
public class STKRequestPasswordAction implements ControllerAction {
public STKRequestPasswordAction() {}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ApplicationConfig ac = new ApplicationConfig();
ac.setAppEmail(request.getAttribute("siteEmail").toString());
ac.setAppName(request.getAttribute("siteName").toString());
ac.setPocEmail(request.getAttribute("sitePOCEmail").toString());
request.setAttribute("ac", ac);
userForm.requestPassword(LoginUser, ac);
的userForm.requestPassword方法
public void requestPassword(STKUser loginUser, ApplicationConfig ac) {
驗證在輸入的用戶ID,請求密碼存儲到DTO,構建StringBuffer消息,然後調用Email Utility類。
EmailUtils.sendEMailByBadge(loginUser.getBadge(), strFrom, strReplyTo, strSubject, emailBody.toString(), strSMTP, true);
我想修改我的初始化參數了包括JSP,並把它們放到web.xml中,但我不知道在那裏我應該讀值。我在POJO中試過這個
String strFrom = getServletContext().getInitParameter("siteEmail");
但是在POJO中沒有servletContext。我會想象它可以去在我的servlet,但我的servlet使用的映射如下:
actionMap.put(null, new STKLoginSubmitAction());
actionMap.put("chkpass", new STKLoginSubmitAction());
actionMap.put("sqlReset", new STKRequestPasswordAction());
String op = request.getParameter("method");
ControllerAction action = (ControllerAction) actionMap.get(op);
我打算移動ApplicationConfig ac
到servlet,改變方法簽名STKRequestPasswordAction
通過'交流」。這是最好的方法還是我錯過了圖片?
謝謝。我不得不刪除返回關鍵字,並用try/catch包圍,但除此之外,它正在工作很大 – jeff 2010-12-09 19:18:46