地址栏".jsp"变为".action"的含义

注意地址栏:未提交页面时,是login.jsp:

提交页面后,是Login.action:

 

在Struts.xml文件中有:

<action name="Login"
   class="com.example.struts.action.LoginAction">
   <result name="input">/jsp/login.jsp</result>
   <result name="success">/jsp/success.jsp</result>
  </action>

即,地址栏中Login.action是Action类对应的映射名。

提交的表单中的数据经由Action类处理后跳转到结果页面,地址栏中仍为Action类映射名。

下面我们再来看一个例子:

ErrorAndMessage.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
      <s:head />
    </head>
	<body>
	    <s:actionerror />
        <p>
            <s:actionmessage />
	</body>
</html>

ErrorAndMessageAction.java:

package com.example.struts.action;
import com.opensymphony.xwork2.ActionSupport;

public class ErrorAndMessageAction extends ActionSupport{
	public String execute() throws Exception{
		addActionError("Action 的错误信息");
		addActionMessage("Action 的消息信息");
		return SUCCESS;
	}
}

struts.xml:

	<action name="ErrorAndMessage"
            class="com.example.struts.action.ErrorAndMessageAction">            
            <result name="success">/jsp/ErrorAndMessage.jsp</result>
        </action>

 

若在地址栏输入:http://localhost:8080/Tg/jsp/ErrorAndMessage.jsp 则什么都不输出。

若在地址栏输入:http://localhost:8080/Tg/jsp/ErrorAndMessage.action 则输出如下:

原因:之前是直接运行.jsp页面,这样标签<s:actionerror />和<s:actionmessage /> 就什么值都没有;

之后是直接运行.action,这样就通过addActionError和addActionMessage方法初始化了error和message,

接着由struts.xml导航到JSP页面,这时标签<s:actionerror />和<s:actionmessage /> 就有值可取了。

注:直接运行.jsp页面之所以不经过struts.xml导航,是因为它没有经过<form>表单"提交"操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzyjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值