Detail the way to configure the default Action in Struts2

  • 2020-12-20 03:38:38
  • OfStack

1. jsp default Settings

1. When the visited Action does not exist, the page will display the error message, and the default Action can be configured to handle the user's abnormal operation;

2. Configuration method:

Add the following under the struts.xml file:


<default-action-ref name="index"></default-action-ref>

Where index is the default name attribute value of Action;

3. When the default Action is configured and there is no Action to be accessed under the corresponding namespace, it will automatically jump to the default Action processing.

4, the instance,

web.xml:


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ;
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <welcome-file-list>
 <welcome-file>hello.jsp</welcome-file>
 </welcome-file-list>
 <filter>
 <filter-name>struts2</filter-name>
 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>

struts.xml:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 <!-- 
 <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 <constant name="struts.devMode" value="false" />
 <include file="example.xml"/>

 <package name="default" namespace="/" extends="struts-default">
  <default-action-ref name="index" />
  <action name="index">
   <result type="redirectAction">
    <param name="actionName">HelloWorld</param>
    <param name="namespace">/example</param>
   </result>
  </action>
 </package>
  -->

 <!-- Add packages here -->
 <constant name="struts.devMode" value="true" />
 <constant name="struts.i18n.encoding" value="GBK"></constant>
  <package name="user" namespace="/" extends="struts-default">
   <default-action-ref name="index"></default-action-ref>
  <action name="index">
   <result>/index.jsp</result>
  </action>
 </package>
</struts>

index.jsp:


<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>" rel="external nofollow" >
 <title>Index</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0"> 
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
 -->
 </head>

 <body>
 Welcome to Magci's BLOG!<br />
 <a href="magci/magc" rel="external nofollow" >magci/magc</a><br />
 <a href="mgc/magc/magci/123456" rel="external nofollow" >mgc/magc/magci/123456</a><br />
 </body>
</html>

2. action sets forward by default


<!--  The default action -->
  <default-action-ref name="index" />
  <action name="index">
   <result type="redirectAction">
    <param name="actionName">page_toIndex</param>
    <!-- <param name="namespace">/example</param> -->
   </result>
  </action>

  <action name="page_*" class="indexAction" method="{1}">
   <result name="toIndex">/WEB-INF/jsps/index.jsp</result>
   <result name="toAdminLogin">/WEB-INF/jsps/admin/admin_login.jsp</result>

   <!-- ajax -->
   <result name="ajaxInsertOneCallback" type="json">
    <param name="root">action</param>
   </result>
  </action>


Related articles: