zoukankan      html  css  js  c++  java
  • 【SSH学习笔记】—从配置Struts1环境到简单实例

    以下我将从一个简单点的计算器实例,介绍struts1的环境配置,以及其重要的两个核心类:ActionForm和Action 


    简单计算器实现思路:

    1.提供一个输入界面,输入两个数字和运算符(+、-、*、/),提交后将运算结果显示出来。假设出现错误显示错误页面,在正确页面和错误页面须要显示出输入值、运算符和计算结果。

     

    2.发送计算请求。须要Action处理这个请求。并将计算结果返回。此外,发请求须要传送数据才干计算。所以须要一个ActionForm来进行数据传送。表单上传送过来的数据都是字符串的,ActionForm能够进行数据类型转换。 


    步骤一:配置Struts环境

    1.jar

    拷贝此路径下的全部jar包。并放置在项目的WebRootWEB-INFlib下

    Strutsstruts-1.2.9-binlib下全部的jar

    2.配置ActionServlet

    找到Strutsstruts-1.2.9-binwebappsstruts-blankWEB-INFweb.xml

    将红框中的内容复制到项目的WebRootWEB-INFweb.xml

     

     

    3.配置struts核心配置文件

    拷贝Strutsstruts-1.2.9-binwebappsstruts-blankWEB-INF下的struts-config.xml文件到WebRootWEB-INF

     

    步骤二:代码实现


    1.新建input.jsp页面:提供输入界面。输入两个数字和运算符

    <body>
    	<h1>简易计算器</h1>
    	<hr> 
    	<form action="cal.action" method="post">
    		<input type="text" name="value1">
    		<select name="flag">
    			<option value="+">+</option>
    			<option value="-">-</option>
    			<option value="*">*</option>
    			<option value="/">/</option> 	
    		</select>
    		<input type="text" name="value2">
    		<input type="submit" value="计算">
    	</form>
    </body>


    2.新建CalActionForm页面并继承Struts的ActionForm:ActionForm将页面上的数据封转到Action业务类。

    <pre name="code" class="java">/**
     * ActionForm传送数据
     * @author 火云
     *
     */
    @SuppressWarnings("serial")
    public class CalActionForm extends ActionForm {
    	
    	private int value1; 	
    	private String flag; 	
    	private int value2;
    
    	public int getValue1() {
    		return value1;
    	}
    
    	public void setValue1(int value1) {
    		this.value1 = value1;
    	}
    
    	public String getFlag() {
    		return flag;
    	}
    
    	public void setFlag(String flag) {
    		this.flag = flag;
    	}
    
    	public int getValue2() {
    		return value2;
    	}
    
    	public void setValue2(int value2) {
    		this.value2 = value2;
    	} 
    }


    3.新建CalAction类并继承Struts的Action,并覆盖execute方法:Action处理每一次请求

    /**
     * Action处理每一次请求。继承Struts的Action,并覆盖execute方法
     * @author 火云
     *
     */
    public class CalAction extends Action {
    
    	@Override
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    		//取出表单数据
    		CalActionForm calform = (CalActionForm)form; //基于Struts对数据的封装传送,所以我们能强制转换
    		
    		int value1  = calform.getValue1(); 
    		String flag = calform.getFlag();
    		int value2 = calform.getValue2(); 
    		
    		//处理数据
    		int result = 0; 
    		
    		try {
    			if("+".equals(flag)){			
    				result = value1+ value2;			
    			}else if("-".equals(flag)){			
    				 result = value1-value2;			
    			}else if("*".equals(flag)){			
    				result=value1*value2;			
    			}else if ("/".equals(flag)){			
    				result=value1/value2;			
    			}
    			//转向成功页面
    			request.setAttribute("result", result);
    			return mapping.findForward("success");
    		} catch (Exception e) {			
    			e.printStackTrace();
    		}		
    		//转向错误页面
    		return mapping.findForward("error");
    	}	
    }


    4.配置流程:Struts-config文件

     

    5.success.jsp页面:

    <body>
    	${calform.value1 }
    	${calform.flag }
    	${calform.value2 }
    	=
    	${result }
    </body>


    6.error.jsp页面

    <body>
    	${calform.value1 }
    	${calform.flag }
    	${calform.value2 }
    	失败!

    </body>


    事实上,在DRP分销系统中我们接触过MVC开发模式,在MVC开发模式中Servlet扮演着控制器的角色。

    其主要功能:參数获取。业务逻辑调用,以及页面转向。


    Struts是基于MVC模式的一个web开发框架。对Servlet进行了封装。为什么要进行封转呢。主要是我们在Servlet进行页面转向时。页面都是写死了。直接转到了jsp。假设我们更换jsp名称,就须要改动代码,并且从表单传过来的数据都是字符串类型,我们还须要依据实际的需求进行类型转换。比如(年龄,int类型),每次都须要先转。基于这些种种原因。Struts对其进行了封转。提供了一种更为灵活的机制。


    总结:

    以上仅仅是通过一个简单的小样例来对struts1的初步学习。这仅仅是学习的第一阶段。对它的理解还须要看在以后的学习中是否真正的用心。每一种框架都有通的一面。所以仅仅要用心学,多思考,再接触新的框架的时候,不论什么问题也都会迎刃而解。 



  • 相关阅读:
    luogu P1630 求和(枚举暴力)
    luogu P3414 SAC#1
    luogu P1869 愚蠢的组合数(质因数+瞎搞)
    luogu P1586 四方定理(背包)
    luogu P3795 钟氏映射(递推)
    2017.8.15 [Haoi2016]字符合并 区间dp+状压dp
    [NOI2002] 荒岛野人 扩展欧几里得算法
    [Noi2002]Savage 扩展欧几里得
    bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
    bzoj 3505: [Cqoi2014]数三角形
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7019386.html
Copyright © 2011-2022 走看看