Struts2框架学习 简易加法计算器实现

软件152  缑旭浩

 

1.新建Web Project

2.导入Struts2库文件

3.选择2.1的struts,拦截后缀选择所有

3、新建input.jsp,success.jsp,error.jsp input.jsp代码如下:

 1  <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> 
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 3  <html>
 4  <head>
 5  <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 6  <title>Insert title here</title> 
 7 </head> 
 8 <body> <h1>简易计算器</h1> <hr> 
 9 <form action="unit/cal.action" method="post"> 
10  <input type="text" name="value1"> <select name="flag"> 
11  <option value="+">+</option> <option value="-">-</option> 
12  <option value="*">*</option>
13  <option value="/">/</option> </select>
14  <input type="text" name="value2"> 
15 <input type="submit" value="计算"> 
16 </form> 
17 </body> </html>

4、新建com.bjpowernode.struts这个包。
关键的是新建CalAactionForm.java和CalAction.java这两个类的时候需要继承Struts的ActionForm和Action这两个类如下:

CalAactionForm.java 代码如下:

 1 package com.bjpowernode.struts;
 2 import org.apache.struts.action.ActionForm; @SuppressWarnings("serial") 
 3 public class CalAactionForm extends ActionForm { 
 4 private int value1; 
 5 private String flag; 
 6 private int value2; 
 7 public int getValue1() { return value1; } 
 8 public void setValue1(int value1) { this.value1 = value1; } 
 9 public String getFlag() { return flag; }
10 public void setFlag(String flag) { this.flag = flag; } 
11 public int getValue2() { return value2; } 
12 public void setValue2(int value2) { this.value2 = value2; }
13 } 

属性要和input.jsp里面的表单数据一致 ActionForm并非单单是获取页面表单的数据,它也可以获取其他的数据,比如说通过超链接传过来的数据。也就是说凡是从页面传递过来的参数都可以注入到ActionForm。 

CalAction.java 代码如下:

 1 package com.bjpowernode.struts; 
 2 import javax.servlet.http.HttpServletRequest; 
 3 import javax.servlet.http.HttpServletResponse; 
 4 import org.apache.struts.action.Action; 
 5 import org.apache.struts.action.ActionForm; 
 6 import org.apache.struts.action.ActionForward; 
 7 import org.apache.struts.action.ActionMapping; 
 8 public class CalAction extends Action { 
 9 @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { CalAactionForm calForm=(CalAactionForm)form; 
10 int value1=calForm.getValue1(); 
11 String flag=calForm.getFlag(); 
12 int value2=calForm.getValue2(); 
13 int result=0; 
14 try { 
15 if("+".equals(flag)){ result=value1+value2; }
16 else if("-".equals(flag)){ result=value1-value2; }
17 else if("*".equals(flag)){ result=value1*value2; }
18 else if("/".equals(flag)){ result=value1/value2; } request.setAttribute("result",result);
19 return mapping.findForward("success");
20 }
21 catch(Exception e){ e.printStackTrace(); 
22 mapping.findForward("error"); } 
23 return mapping.findForward("error"); } } 

5、配置struts-config.xml

代码如下:

 1 <?xml version="1.0" encoding="ISO-8859-1" ?> 
 2 <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> 
 3 <struts-config>
 4  <form-beans> 
 5 <form-bean name="calForm" type="com.bjpowernode.struts.CalAactionForm"/> </form-beans> 
 6 <action-mappings> 
 7 <action path="/unit/cal" type="com.bjpowernode.struts.CalAction" name="calForm" scope="request" > 
 8 <forward name="success" path="/success.jsp"/> 
 9 <forward name="error" path="/error.jsp"/>
10  </action>
11  </action-mappings> 
12 </struts-config>      

struts-config.xml只要更改了就必须重新启动一次Tomcat

 

6、配置web.xml。

代码如下:

 1 <?xml version="1.0" encoding="UTF-8"?> 
 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2017/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 3  <servlet> 
 4 <servlet-name>action</servlet-name> 
 5 <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
 6 <init-param> <param-name>config</param-name>
 7  <param-value>/WEB-INF/struts-config.xml</param-value> 
 8 </init-param>
 9  <init-param> 
10 <param-name>debug
11 </param-name> 
12 <param-value>2</param-value> 
13 </init-param> <init-param>
14  <param-name>detail</param-name> 
15 <param-value>2</param-value> 
16 </init-param> 
17 <load-on-startup>2</load-on-startup> 
18 </servlet>
19  <!-- Standard Action Servlet Mapping -->
20  <servlet-mapping> 
21 <servlet-name>action</servlet-name> 
22 <url-pattern>*.action</url-pattern>
23  </servlet-mapping> 
24 </web-app> 

7、填写success.jsp,error.jsp代码。

Success.jsp代码如下:

 1 <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> 
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 3  <html> 
 4 <head>
 5  <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 6  <title>Insert title here</title>
 7  </head>
 8  <body> 
 9 ${calForm.value1} 
10 ${calForm.flag } 
11 ${calForm.value2} = ${result } 
12 </body> 
13 </html> 

Error.jsp代码如下:

 1 <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> 
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 3 <html> 
 4 <head> 
 5 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 6 <title>Insert title here</title> 
 7 </head> 
 8 <body>
 9 ${calForm.value1 } 
10 ${calForm.flag } 
11 ${calForm.value2 } 计算失败! 
12 </body> 
13 </html>

8、index.jsp代码。

 1 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> 
 2 <% 
 3 String path = request.getContextPath(); 
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
 5 %> 
 6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
 7 <html> 
 8 <head> 
 9 <base href="<%=basePath%>"> 
10 <title>
11 My JSP 'index.jsp' starting page
12 </title> 
13 <meta http-equiv="pragma" content="no-cache"> 
14 <meta http-equiv="cache-control" content="no-cache"> 
15 meta http-equiv="expires" content="0"> 
16 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
17 <meta http-equiv="description" content="This is my page"> 
18 <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> 
19 </head> 
20 <body> 
21 <a href="input.jsp">简易计算器</a> 
22 </body> 
23 </html>   

9.运行项目

选择菜单“Run”—“Run Configurations”,设置如下图:

10.在浏览器中查看结果

地址栏输入“http://localhost:9527/struts-test/”查看结果

 

经验总结:

这个计算器只实现了最基本的功能,已知的还会有被除数为0的bug,页面显示效果也十分简陋。

不知为何选择拦截后缀的时候只能选择拦截所有,也就是/*,如果选择/action的话不能起作用。

本来想在JSP页面中就指定在action中所用的方法,那样的话struts.xml文件可以少写一些,但是没成功,就用回这种方式了。

一开始不知道MyEclipse可以这样添加Struts2框架,所以使用的方法是:

1.建立Web Project

2.把几个必须要的包放入lib文件夹中使之成为Reference Library

3.写好各个所需要用到的JSP页面

4.复制一个已经写好过滤器的web.xml文件(因为过滤器部分的代码容易写错)

5.编写继承了ActionSupport类的Action(如果是直接使用接收数据的第一种方式action属性的话要写上各自属性的get和set方法,另外写入execute方法作为主要的执行方法,返回SUCCESS等其它常量,具体返回的字符串要与struts.xml中result的name相对应)

6.编写struts.xml(如果希望运行的不是execute方法,要记得在action中添加method属性指定方法名。其实result的name就是执行action后的返回值,不同的返回值指向不同的页面)

转载于:https://www.cnblogs.com/javaeeadd/p/7106390.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值