Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Struts 2中创建动态URL_Java_Jsp_Url_Dynamic_Struts2 - Fatal编程技术网

Java 如何在Struts 2中创建动态URL

Java 如何在Struts 2中创建动态URL,java,jsp,url,dynamic,struts2,Java,Jsp,Url,Dynamic,Struts2,我已经创建了login.jsp表单,当用户输入用户名和密码时,我想创建URL,比如:/companyName/username 示例:如果公司名称为abc,用户名为parth1,则URL为 ”http://localhost:8080/Temp_Central_Emp/abc/parth1/afterLogin.jsp“ 我根据用户名从数据库中获取companyName 文件:login.jsp: <s:form action="afterLogin" method=&

我已经创建了login.jsp表单,当用户输入用户名和密码时,我想创建URL,比如:
/companyName/username

示例:如果公司名称为abc,用户名为parth1,则URL为

”http://localhost:8080/Temp_Central_Emp/abc/parth1/afterLogin.jsp“

我根据用户名从数据库中获取
companyName

文件:
login.jsp

<s:form action="afterLogin" method="post">
    <s:textfield label="Enter username" key="userId" maxlength="5" size="30" id="userId"/>
    <s:password label="Enter password" key="userPsw" size="30" />
    <tr>
        <td></td>
        <td>
            <img src="<c:url value='simple-captcha.png' />" />
            <br />
            <p>Press F5 for refresh.</p>
        </td>
    </tr>
    <s:textfield label="Enter code" key="captchaResponse" size="30" />
    <s:submit value="Login" />
</s:form>
public class LoginAction extends ActionSupport{

private Map<String, Object> session;
private String userId;
private String userPsw;
private String url;

private static final long serialVersionUID = 1L;

@Override
@Action(value="{url}/afterLogin")
public String execute() throws Exception {      
    // business logic to insert user into database
    url = "/companyName/" + userId;
    return SUCCESS;
}

 /* Getters and Setters */
}
文件:
LoginAction.java

<s:form action="afterLogin" method="post">
    <s:textfield label="Enter username" key="userId" maxlength="5" size="30" id="userId"/>
    <s:password label="Enter password" key="userPsw" size="30" />
    <tr>
        <td></td>
        <td>
            <img src="<c:url value='simple-captcha.png' />" />
            <br />
            <p>Press F5 for refresh.</p>
        </td>
    </tr>
    <s:textfield label="Enter code" key="captchaResponse" size="30" />
    <s:submit value="Login" />
</s:form>
public class LoginAction extends ActionSupport{

private Map<String, Object> session;
private String userId;
private String userPsw;
private String url;

private static final long serialVersionUID = 1L;

@Override
@Action(value="{url}/afterLogin")
public String execute() throws Exception {      
    // business logic to insert user into database
    url = "/companyName/" + userId;
    return SUCCESS;
}

 /* Getters and Setters */
}
公共类登录扩展了ActionSupport{
私人Map会议;
私有字符串用户标识;
私有字符串userPsw;
私有字符串url;
私有静态最终长serialVersionUID=1L;
@凌驾
@操作(value=“{url}/afterLogin”)
公共字符串execute()引发异常{
//将用户插入数据库的业务逻辑
url=“/companyName/”+userId;
回归成功;
}
/*接球手和接球手*/
}
我指的是这个链接,但我的需要是不同的


我也尝试了这个链接中的代码,但仍然没有解决它。

尝试将url变量放入您的
struts.xml

<action name="afterLogin" class="com.parth.LoginAction">
    <result name="success">${url}/afterLogin.jsp</result>
</action>

如果要更改URL并遵循PRG模式,则结果应为重定向操作类型。见:

afterLogin?companyName=${companyName}&userId=${userId}
/afterLogin.jsp

谢谢。但我收到错误:HTTP Status 404-/Temp\u Central\u Emp/companyName/parth/afterLogin.jspI认为您也需要动态更改您的companyName。如果您有想法,请编辑您编写的上述代码。@LKTN.25您如何确定JSP的位置?当我添加i receive error时,请查看@goodyzain。我还根据你问题的答案修改了代码,但仍然不起作用。如果您知道如何生成动态url,请根据上述问题向我提供代码。添加高级通配符时会出现什么错误??在浏览器中:HTTP Status 404-/Temp\u Central\u Emp/控制台中:“java.lang.RuntimeException:无法加载bean com.opensymphony.xwork2.util.PatternMatcher(regex)——[未知位置]”@ParthPatel您应该发布stacktrace我使用struts.xml中的代码,但它不起作用。您能告诉我,我在struts.xml中编写此代码的位置是在中还是外部,请说明是给定解决方案的正确struts.xml文件。使用您的代码后,url是但我想要的。因此,我需要在哪里更改以获取此url?