java web.xml 参数_将Java Web应用程序的web.xml参数转换为POJO

本文讨论了一个电子邮件实用程序类在多个Web应用程序中的复用问题,并提出了一种通过JNDI从web.xml读取配置参数的方法。

我有一个电子邮件实用程序类,该类由我的所有Intranet Web应用程序共享,该类通过电子邮件将其忘记的密码发送给员工(该类已复制到每个Webapp中).我需要给电子邮件加上适当的主题行,ReplyTo联系人点,应用程序名称等,以匹配正在调用它的应用程序.

我可以将这些参数作为参数传递,但我的方法是在登录网页的标头中包含initialize.jsp.

.com");

request.setAttribute("siteName", "Commitment Report Database");

request.setAttribute("sitePOCEmail", "smith@.com");

%>

然后,这些请求参数由Struts类似的Action存储到DTO中.

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) {

验证输入的请求密码的userID,生成StringBuffer消息,然后调用Email Utility类.

EmailUtils.sendEMailByBadge(loginUser.getBadge(), strFrom, strReplyTo, strSubject, emailBody.toString(), strSMTP, true);

我想从包含的jsp中重构我的初始化参数,并将其放入web.xml中,但是我不确定应该在哪里读取这些值.我在POJO中尝试过

字符串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的方法签名以传递ac.这是最好的方法还是我错过了图片?

解决方法:

在您的web.xml中:

myEntryName

java.lang.String

myEntryValue

在您的Java代码中:

// Do once

Context env = (Context) new InitialContext().lookup("java:comp/env");

// Do for every entry

String entryValue = (String) env.lookup("myEntryName");

使用JNDI,您可以在Web应用程序中的每个位置读取设置,还可以根据需要将配置保留在web.xml中,例如,对于Tomcat,在context.xml中;对于Jetty,在jetty-env.xml中(尽管格式不同).

标签:servlets,java,jsp

来源: https://codeday.me/bug/20191208/2095063.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值