我有一个电子邮件实用程序类,它是由我的所有内部网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