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



简单计算器实现思路:

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

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



步骤一:配置Struts环境

1.jar包

拷贝此路径下的全部jar包。并放置在项目的WebRoot\WEB-INF\lib下

\Struts\struts-1.2.9-bin\lib下全部的jar包

2.配置ActionServlet

找到Struts\struts-1.2.9-bin\webapps\struts-blank\WEB-INF\web.xml

将红框中的内容复制到项目的WebRoot\WEB-INF\web.xml下

 

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWluZ3h1YW55dW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" width="750" height="395">

 

3.配置struts核心配置文件

拷贝Struts\struts-1.2.9-bin\webapps\struts-blank\WEB-INF下的struts-config.xml文件到WebRoot\WEB-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文件

 

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWluZ3h1YW55dW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" width="750" height="300" style="font-family:'Microsoft YaHei'; font-weight:bold; font-size:12px">

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的初步学习。这仅仅是学习的第一阶段。对它的理解还须要看在以后的学习中是否真正的用心。每一种框架都有通的一面。所以仅仅要用心学,多思考,再接触新的框架的时候,不论什么问题也都会迎刃而解。 



【SSH学习笔记】—从配置Struts1环境到简单实例的更多相关文章

  1. Vue学习笔记(五)——配置开发环境及初建项目

    前言 在上一篇中,我们通过初步的认识,简单了解 Vue 生命周期的八个阶段,以及可以应用在之后的开发中,针对不同的阶段的钩子采取不同的操作,更好的实现我们的业务代码,处理更加复杂的业务逻辑. 而在这一 ...

  2. node学习笔记1——配置node环境变量及执行node文件

    最近在学习node,今天说一下node的变量环境配置.虽然网上有说,最新版的已经不需要配置这个东东了,但是我的电脑还是得配置.闲话少扯,进入正题: 1.安装node,这步就略过了.就是下载 node, ...

  3. Solr学习笔记之1、环境搭建

    Solr学习笔记之1.环境搭建 一.下载相关安装包 1.JDK 2.Tomcat 3.Solr 此文所用软件包版本如下: 操作系统:Win7 64位 JDK:jdk-7u25-windows-i586 ...

  4. ESP32学习笔记(一) 环境搭建与下载

    ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...

  5. Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

    Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...

  6. Flutter学习笔记(1)--环境安装

    flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...

  7. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

  8. TensorFlow学习笔记0-安装TensorFlow环境

    TensorFlow学习笔记0-安装TensorFlow环境 作者: YunYuan 转载请注明来源,谢谢! 写在前面 系统: Windows Enterprise 10 x64 CPU:Intel( ...

  9. Kettle学习笔记(一)— 环境部署及运行

    目录 Kettle学习笔记(一)-环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle简介 Ket ...

随机推荐

  1. Python str 与 bytes 类型(Python2/3 对 str 的处理)

    本文均在 Python 3 下测试通过,python 2.x 会略有不同. 1. str/bytes >> s = '123' >> type(s) str >> ...

  2. 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(1)

    Part II 深入搜索 搜索不仅仅是全文本搜索:数据的很大部分是结构化的值例如日期.数字.这部分开始解释怎样以一种高效地方式结合结构化搜索和全文本搜索. 第十二章 结构化搜索 结构化搜索_ 是指查询 ...

  3. 方便查看线程状况的jsp页面

    此方法来自深入理解java虚拟机一书,用作管理员页面,可以随时用浏览器查看线程堆栈 <%@ page language="java" import="java.ut ...

  4. Windows Server8下补丁分发配置与iSCSI配置

    1.Win Server 8 下配置补丁分发(高清视频下载:http://down.51cto.com/data/424305)本视频适合于Windows Server系统管理员学习 650) thi ...

  5. Hexo 添加自定义的内置标签

    灵感 想设计一个记录自已骑行的页面,显示时间.地点.路线图等信息.方便以后做一些留念.定位想实现下面类似的效果.参考:<特效>      实现方案也比较简单,反键查看源码.直接Copy,在 ...

  6. hzwer 模拟题 祖孙询问

    祖孙询问 题目描述 已知一棵n个节点的有根树.有m个询问.每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系. 输入输出格式 输入格式: 输入第一行包括一个整数n表示节点个数. 接下来n行每行一 ...

  7. 洛谷 P1900 自我数

    P1900 自我数 题目描述 在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数.对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和.例如,d(75 ...

  8. 关于Java的10个谎言

    以下的这些都算是比較高级的问题了.面试中一般也非常少问到.由于它们可能会把面试者拒之门外.只是你能够自己找个时间来实践一下. System.exit(0)会跳过finally块的运行 System.s ...

  9. maven项目运行没问题,但是项目名上有一把×

    原因有以下:你先要自己进行检查,看是出现的什么错误 有红叉,并不代表编译和运行就出错.到Windows—Show view—Problems下看看到底报了什么错.像一些validation出错,项目虽 ...

  10. js---14公有私有成员方法

    var ns1 = {}; //命名空间 ns1.ns11 = {};//子命名空间 ns1.module1 = {name:"a",m:function(){}}; consol ...