美文网首页
一个Action处理多个请求

一个Action处理多个请求

作者: 黎涛note | 来源:发表于2017-12-11 23:57 被阅读0次
• 在<action>元素中使用method属性,将多个请求关联到同一个Action

类的不同方法。

比如:

login.action,register.action,logout.action等多个和用户相关的请
求,由一个Action类处理。

一个Action类处理多种请求时,数据的装载也会自动完成。
【示例】用户登录和新用户注册,使用同一个Action
• 【了解】另一种配置方式

请求URL使用:user!login.action, user!register.action, user!logout.action的形式;
在struts.xml中配置:

<constant name="struts.enable.DynamicMethodInvocation" 
value="true"></constant>
<action name="user" class=“XXXAction">
<result name="main">/main.jsp</result>
<result name="login">/login.jsp</result>
<!—struts2.5后需追加-->
<allowed-methods>login,register</allowed-methods> 
</action>
注意:

在配置<package>标签的路径时,如果配置为相对路径,当注册页面出现类型不匹配的问题时,struts 框架会通过 <result name="register">/register.jsp</result>的配置回到本页面,但是会在当前目录下,除了你所访问jsp页面资源之外的路径作为你当前路径的前缀+/***(你所配置的namespace路径+jsp资源路径)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s"  uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form method="post" action="user/register.action">
       账号:<input type="text" name="userInfo.account" /><br/>
       密码:<input type="password" name="userInfo.pwd" /><br/>
       确认密码:<input type="password" name="confirm" /><br/>
       姓名:<input type="text" name="userInfo.userName" /><br/>
       年龄:<input type="text" name="userInfo.age" /><br/>
       出生日期:<input type="text"  name="userInfo.dob" /><br/>
       性别:<input type="radio" name="userInfo.gender" value="0" checked="checked"/>男
        <input type="radio" name="userInfo.gender" value="1" />女<br/>
        <input type="submit"  value="注册"/><br/>
        
        <s:fielderror></s:fielderror>
        <s:actionerror></s:actionerror>
    </form>
</body>
</html>
<package name="demo" extends="struts-default" namespace="/user">
                <action name="login" class="com.xixi.struts_demo.action.UserAction" method="login">
                    <result name="success">/main.jsp</result>
                    <result name="login">/login.jsp</result>
                    <result name="input">/login.jsp</result>
                </action>
                <action name="register" class="com.xixi.struts_demo.action.UserAction" method="register">
                    <result name="success">/reg_success.jsp</result>
                    <result name="register">/register.jsp</result>
                    <result name="input">/register.jsp</result>
                </action>
</package>

出现结果为:


image.png

出错一次后的访问路径:


image.png
出错多次后的访问路径:
image.png
每次出错后都会在jsp资源路径前加上/user,会使你的访问路径相当的深入。但是struts会帮助我们找到相应的资源,无论我们多加了多少级的/user;
一般情况下以更目录为主设置路径:
action="/struts_demo/user/register.action"
action="/工程名/<package>namespace属性的配置名称/action请求名称.action"
注意:

当action的路径为/开头时,struts只会在其前面加上主机名和端口号;
其他不会添加额外的信息;

相关文章

  • 一个Action处理多个请求

    • 在元素中使用method属性,将多个请求关联到同一个Action 类的不同方法。 比如: lo...

  • Spring学习之请求处理方法Action详解

    Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action,每个请求处理...

  • struts 动态方法调用

    动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 1.指定method属性的方法 ...

  • struts2配置文件详解(一)

    struts.xml的常用配置 一个Action内包含多个请求处理方法的处理Struts1提供了DispatchA...

  • Struts2.5动态方法调用问题

    动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多。一般有以下三种方法,指定meth...

  • 响应处理

    响应处理: 在客户端发起请求时,struts根据 配置,将请求交给指定的action处理(创建action对象,调...

  • Scala Play2

    Action 大多数Play应用接受的请求由一个Action处理。 一个play.api.mvc.Action 基...

  • 2017-07-28

    redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结...

  • Actions, Controllers 和 Results

    什么是 Action ? 大部分 Play 应用的接收的请求由 action 处理.一个 action 基本上算是...

  • [Struts2]9-Result配置

    常用结果类型 chain-Action处理完成用户请求之后,转发到下一个Action继续处理。redirectAc...

网友评论

      本文标题:一个Action处理多个请求

      本文链接:https://www.haomeiwen.com/subject/jnxgixtx.html