Make SEO friendly URL with Struts 2.5 project | Trần Đình Thoại

Make SEO friendly URL with Struts 2.5 project


1. For example, download and import TDD-Struts-Blank.zip

2. Add following lines to /pom.xml

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>

2. Add following lines to /src/java/struts.xml

<constant name="struts.action.extension" value=","/>
    <constant name="struts.enable.SlashesInActionNames" value="true"/>

Final struts.xml is as:

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

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
 <constant name="struts.action.extension" value=","/>
 <constant name="struts.enable.SlashesInActionNames" value="true"/>

    <package name="default" namespace="/" extends="struts-default">

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

        <global-results>
            <result name="error">/WEB-INF/jsp/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">Hello</param>
                <param name="namespace">/</param>
            </result>
        </action>
    </package>

    <include file="blank.xml"/>

    <!-- Add packages here -->

</struts>

3. Modify /src/java/blank.xml as following:

<?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>
 
    <package name="blank" namespace="/" extends="struts-default">

        <action name="p/*/*" class="blank.HelloAction">
   <param name="code">{1}</param>
      <param name="slug">{2}</param>
            <result>/WEB-INF/jsp/blank/Hello.jsp</result>
        </action>

    </package>

</struts>

4. Modify /src/java/blank/HelloAction.java as following:

package blank;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport implements org.apache.struts2.interceptor.ServletRequestAware, org.apache.struts2.interceptor.ServletResponseAware {

    public String execute() throws Exception {
        setMessage(getText(MESSAGE));
        return SUCCESS;
    }

    public static final String MESSAGE = "message";

    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    private String code;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    private String slug;

    public String getSlug() {
        return slug;
    }

    public void setSlug(String slug) {
        this.slug = slug;
    }

    private HttpServletResponse response;
    
 @Override
 public void setServletResponse(HttpServletResponse response) {
  this.response = response;
 }

 private HttpServletRequest request;
 
 @Override
 public void setServletRequest(HttpServletRequest request) {
  this.request = request;
 }

}
Tuesday, May 31, 2016 at 3:15 AM