项目有一个servlet,当一个人注销时会调用它。
protected $redirectTo = '/home';
servlet尝试将请求转发给struts的logon.do操作。 以下是我的web.xml文件:
public class LogonServlet extends HttpServlet {
private static final long serialVersionUID = -4899047924930198118L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
setFirmAndRedirect(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
setFirmAndRedirect(request, response);
}
private void setFirmAndRedirect(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String firm;
String serverPath = request.getServletPath();
firm = serverPath.replaceAll("/", "").replaceAll(".logon", "").trim()
.toLowerCase();
request.setAttribute("firm", firm);
RequestDispatcher dispatcher = request.getRequestDispatcher("/logon.do");
dispatcher.forward(request, response);
}
}
LogonServlet用于按照以下struts.xml提供注销请求:
<web-app>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles-defs.xml</param-value>
</context-param>
<filter>
<filter-name>HibernateSessionFilter</filter-name>
<filter-class>com.rolfeandnolan.ccp.filters.HibernateSessionFilter</filter-class>
</filter>
<!-- Struts 2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- Should only apply to Alerts Direct requests -->
<filter-mapping>
<filter-name>HibernateSessionFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>logon</servlet-name>
<servlet-class>com.rolfeandnolan.ccp.servlets.LogonServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>logon</servlet-name>
<url-pattern>*.logon</url-pattern>
</servlet-mapping>
转发时,它给出了404错误:
HTTP状态404 - /ccpserver/logon.do 输入状态报告 消息/ccpserver/logon.do 说明请求的资源(/ccpserver/logon.do)不可用。 JBoss Web / 2.1.3.GA
点击直接网址 <action name="logoff"
class="com.rolfeandnolan.ccp.struts.actions.LogoffAction">
<param name="allowedRoles">admin,margin,alerts,limitadmin,workfloweditor,eval,theocalc,stress,alertscustomer,useradmin</param>
<result name="success">/logon.jsp</result>
<result name="firmlogon" type="dispatcher">
<param name="location">${firm}.logon</param>
</result>
</action>
时,工作正常。
答案 0 :(得分:1)
如果 [self loadGoogleAdMobBanner];
-(void)loadGoogleAdMobBanner
{
}
中有GoogleAdsCategoryCell *myGoogleAdCell = [tableView dequeueReusableCellWithIdentifier:@"GoogleAdsCategoryCell"];
if (myGoogleAdCell == nil)
{
NSArray *nib_Array = [[NSBundle mainBundle]loadNibNamed:@"GoogleAdsCategoryCell" owner:self options:nil];
myGoogleAdCell = [nib_Array objectAtIndex:0];
}
[myGoogleAdCell.bannerView addSubview:_homeBannerView];
return myGoogleAdCell;
值,那么您不需要servlet。注销后,您应该使用重定向类型结果重定向到登录操作。
Redirect Action Result
此结果使用的是
firm
valueStack
将浏览器重定向到调用的URL 指定的操作和(可选)命名空间。这比ActionMapper
因为它不需要你编码ActionMapperFactory
处理的ServletRedirectResult
处理的网址格式 配置文件。这意味着您可以更改您的网址格式 任何一点,你的申请仍然有效。这是强烈的 建议您在重定向到其他操作时使用 这个结果而不是标准的重定向结果。请参阅下面的示例,了解请求参数的示例 传入。
ActionMapper
有关详细信息,请参阅ActionMapper。
您可以编写代码
struts.xml
答案 1 :(得分:0)
您使用next_random_int
进行登录LogonServlet
。稍后在/logon.do
方法的同一个servlet中,为什么要将请求转发给同一个setFirmAndRedirect
?即,url
你需要另一个像/logon.do
这样的网址,它是一个包含你的注销码的servlet
该注销的映射应如下所示:
/logout