在Struts2.x中使用非execute方法的实现及调用

Action可以采用默认的execute方法,也可以使用自定义的无形式参数的返回类型为String类型的方法,下面以计算器的实现来练习类方法的实现及调用。

调用默认的execute的方法,在前面的任务中已经练习,这里只练习调用非execute方法,对于非execute方法的调用有如下4种方式:

(1)   使用动态方法调用(DMI)方式;

(2)   在struts.xml中通过method属性指定方法名;

(3)   使用struts提交按钮的method属性;

(4)   使用通配置符方式配置Action。

首先添加struts2支持 添加完以后

接下来配置struts.xml文件的初始内容如下:

<struts>

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

       </package不要忘记!

name 的名字时随意的

添加包名在包名下添加action类

package bzu.edu.action;

import com.opensymphony.xwork2.ActionSupport;

public class CalcAction extends ActionSupport{
private double num1;
private double num2;
private double result;
public double getNum1() {
	return num1;
}
public void setNum1(double num1) {
	this.num1 = num1;
}
public double getNum2() {
	return num2;
}
public void setNum2(double num2) {
	this.num2 = num2;
}
public double getResult() {
	return result;
}
public void setResult(double result) {
	this.result = result;
}
//加法
public String add(){
	result=num1+num2;
	return "result";
}
//减法
public String sub(){
	result=num1-num2;
	return "result";
}
//乘法
public String mul(){
	result=num1*num2;
	return "result";
}
//除法
public String div(){
   if(num2!=0){
	   result=num1/num2;
	   
   }
   return "result";
}
}


 

添加calc—_result.jsp页面,用以计算结果

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<%
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%>">
    
    <title>My JSP 'calc_result.jsp' starting page</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">
	-->

  </head>
  
  <body>
   <form action="" method="post">
   <table align="center" border="1">
   <tr>
	    		<td>第1个数:</td>
	    		<td><s:property value="num1"/></td>
	    	</tr>
	    	<tr>	
	    		<td>第2个数:</td>
	    		<td><s:property value="num2"/></td>
	    	</tr>
	    	<tr>
	    		<td>计算结果:</td>
	    		<td><s:property value="result"/></td>
	    	</tr>
	    	
   </table>
   </form>
  </body>
</html>


因为用了四种方法所以要有四个页面,这四个页面分别与Struts.xml中相对应接下来是四个页面

(1)calc.jsp

在WebRoot下添加calc.jsp页面,修改该页面的内容如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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%>">
    
    <title>My JSP 'calc.jsp' starting page</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">
	-->
	<!-- 5.1.动态方法调用(DMI)方式 -->
     <script type="text/javascript">
     function doCalc(op)
     {
         document.frm.action="calc!"+op;
         document.frm.submit();
     }
     
     </script>
  </head>
  <form name="frm" action="" method="post">
    <table align="center" border="1">
	    	<tr>
	    		<td>第1个数:</td>
	    		<td><input type="text" name="num1"/></td>
	    	</tr>
	    	<tr>
	    		<td>第2个数:</td>
	    		<td><input type="text" name="num2"/></td>
	    	</tr>
	    	<tr>
	    		<td colspan="2" align="center">
	    			<input type="button" value="  加  " οnclick="doCalc('add');"/>
	    			<input type="button" value="  减  " οnclick="doCalc('sub');"/>
	    			<input type="button" value="  乘  " οnclick="doCalc('mul');"/>
	    			<input type="button" value="  除  " οnclick="doCalc('div');"/>
	    		</td>
	    	</tr>
	    </table>
  
  </form>
  <body>
  
  </body>
</html>

(2 )calc1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
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%>">
    
    <title>My JSP 'calc2.jsp' starting page</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">
	-->

  </head>
  <body>
  <s:form name="myfrm" action="calc" method="post">
	    <table align="center" border="1">
	    	<tr><td>第1个数:</td>
	    		<td><input type="text" name="num1"/></td>
	    	</tr>
	    	<tr><td>第2个数:</td>
	    		<td><input type="text" name="num2"/></td>
	    	</tr>
	    	<tr>
	    		<td colspan="2" align="center">
	   <s:submit value="加" method="add"/>
	    <s:submit value="减" method="sub"/>
	     <s:submit value="乘" method="mul"/>
	      <s:submit value="除" method="div"/>
	    		</td>
	    	</tr>
	    </table>
	</s:form>

  </body>
</html>

(2 )calc3.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
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%>">
    
    <title>My JSP 'calc2.jsp' starting page</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">
	-->
<!-- (3).使用struts标签来完成form -->
<!-- 重点是使用s:form标签,并在按钮中使用method方法。 它在struts中的配置同样是调用方法(1)-->
  </head>
  
  <body>
    <s:form name="myfrm" action="calc" method="post">
	    <table align="center" border="1">
	    	<tr><td>第1个数:</td>
	    		<td><input type="text" name="num1"/></td>
	    	</tr>
	    	<tr><td>第2个数:</td>
	    		<td><input type="text" name="num2"/></td>
	    	</tr>
	     </table>
	    	<tr>
	    		<td align="center">
	      <s:submit value="加" method="add"/>
	      <s:submit value="减" method="sub"/>
	      <s:submit value="乘" method="mul"/>
	      <s:submit value="除" method="div"/>
	    		</td>
	    	</tr>
	   
	</s:form>
  </body>
</html>

(2 )calc4.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%
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%>">
    
    <title>My JSP 'calc4.jsp' starting page</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">
	-->

  </head>
  <!-- 可以使用通配符的方式进行配置。 -->
 <script type="text/javascript">
		function doCalc(op)
		{
			document.myfrm.action="calc"+op;
			document.myfrm.submit();
		}
	</script>

  </head>
  
  <body>
  <form name="myfrm" action="" method="post">
	    <table align="center" border="1">
	    	<tr><td>第1个数:</td>
	    		<td><input type="text" name="num1"/></td>
	    	</tr>
	    	<tr><td>第2个数:</td>
	    		<td><input type="text" name="num2"/></td>
	    	</tr>
	    	<tr>
	    		<td colspan="2" align="center">
	    <input type="button" value="  加  " οnclick="doCalc('add');"/>
	    <input type="button" value="  减  " οnclick="doCalc('sub');"/>
	    <input type="button" value="  乘  " οnclick="doCalc('mul');"/>
	    <input type="button" value="  除  " οnclick="doCalc('div');"/>
	    		</td>
	    	</tr>
	    </table>
	</form>

  </body>
</html>

接下来就是最重要的Struts2的配置了

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="myStruts" extends="struts-default" namespace="/">
<!--  (1)	使用动态方法调用(DMI)方式;(3).s:submit的method方法-->
<action name="calc" class="bzu.edu.action.CalcAction">
<result name="result">/calc_result.jsp</result>
</action>
<!-- (2).使用struts.xml的method来设置不同的action -->
<action name="add" class="bzu.edu.action.CalcAction" method="add">
<result name="result">/calc_result.jsp</result>
</action>
<action name="sub" class="bzu.edu.action.CalcAction" method="sub">
<result name="result">/calc_result.jsp</result>
</action>
<action name="mul" class="bzu.edu.action.CalcAction" method="mul">
<result name="result">/calc_result.jsp</result>
</action>
<action name="div" class="bzu.edu.action.CalcAction" method="div">
<result name="result">/calc_result.jsp</result>
</action>
<!-- (4).通配符进行配置 -->
<action name="calc*" class="bzu.edu.action.CalcAction" method="{1}">
<result name="result">/calc_result.jsp</result>
</action>
</package>
</struts>    


 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值