gpt4 book ai didi

java - 将 Servlet 转换为 Struts2 操作类

转载 作者:行者123 更新时间:2023-11-30 11:57:30 25 4
gpt4 key购买 nike

我正在将一个动态 Web 项目移植到 Struts2,我必须将许多 servlet 转换为 Struts2 操作。我想使用 ServletRequestAware、ServletResponseAware 和 SessionAware 接口(interface)并保持大部分代码不变。请看一下我通过 GOOGLin 找到的 BaseAction.java 类。我想使用它以便我可以执行其他操作来简单地扩展 BaseAction。

BaseAction.java

public abstract class BaseAction extends ActionSupport implements SessionAware, ServletRequestAware,ServletResponseAware, ServletContextAware{

private static final long serialVersionUID = 1L;
protected Map session;
protected HttpServletRequest request;
protected HttpServletResponse response;

public String execute() throws Exception {
return doExecute();
}

protected abstract String doExecute() throws Exception;

public Map getSession() {
return session;
}

public void setSession(Map sess) {
this.session = sess;
}

public HttpServletRequest getServletRequest() {
return request;
}

public void setServletRequest(HttpServletRequest req){
this.request = req;
}

public HttpServletResponse getServletResponse() {
return response;
}

public void setServletResponse(HttpServletResponse resp) {
this.response = resp;
}

}

现在假设我有一个像下面这样的 servlet:Servlet.java

public class Servlet extends HttpServlet
{
private static Logger log = Logger.getLogger(Servlet.class);

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException
{
HttpSession session=request.getSession();
Bean bean= new Bean();
bean.setName(request.getParameter("xxx"));
session.setAttribute("bean");
response.sendRedirect("login.jsp");
}
}

有人可以编写一个扩展 BaseAction 等同于 Servlet 的 Action 类吗?提前致谢。

最佳答案

由于您使用的是 Struts2,我建议您充分利用该框架提供的所有功能,而不是尝试破解现有的 servlet 代码。获取和设置请求参数和 session 的 http 内容由 struts2 框架轻松处理:

public class NewAction implements SessionAware {

private Map theSession;
private XXX xxx;

public String execute() {
Bean b = new Bean();
b.setXXX(xxx);
theSession.put(b);

return "success";
}

public XXX getXXX() {
return xxx;
}

public void setXXX(XXX xxx) {
this.xxx = xxx;
}

public Map getSession() {
return theSession;
}

public void setSession(Map session) {
theSession = session;
}
}

您的 struts.xml 应该包含该操作的条目:

<action name="NewAction" class="yourapp.NewAction">
<result type="redirect">login.jsp</result>
</action>

关于java - 将 Servlet 转换为 Struts2 操作类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com