struts 配置过程 -一个计算器程序

1、新建一个java web项目

2、引入jar包、jar包路径:struts-1.2.9-bin\lib

3、配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>
 <url-pattern>*.action</url-pattern>  是拦截前台配置信息。

 4、配置struts-config.xml文件

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>

	<form-beans>
		<form-bean name="calForma" type="com.bjpowrnode.struts.CalActionForm"/>
	</form-beans>

	<action-mappings>
		<action path="/cala"
		        type="com.bjpowrnode.struts.CalAction"
		        name="calForma"
		        scope="request"
		 >
			 <forward name="success" path="/success.jsp"/>
			 <forward name="error" path="/error.jsp"/>
	     </action>
	</action-mappings>

</struts-config>
<form-bean name="calForma" type="com.bjpowrnode.struts.CalActionForm"/>  其中的name“calForm”是给文件中的数据起了个别名,在下面用( name="calForma")通过forward放回的页面中,也中通过这里的 name="calForma"来取值的。
  type="com.bjpowrnode.struts.CalAction"  数据的来源
  scope="request" 数据提交的方式  默认是session存储。

input.jsp 页面 :显示计算机页面

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
    <h>简易计算机</h>
    <hr>
    <form action="cala.action" method="post">
        <input type="text" name="value1"><br>
        <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>
</html>

CalActionForm类: 相对于实体

package com.bjpowrnode.struts;

import org.apache.struts.action.ActionForm;

@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;
    }

}

CalAction类: 处理业务逻辑

package com.bjpowrnode.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class CalAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        CalActionForm calForm = (CalActionForm)form;
        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;
            }

            //把result 放进request 中方便el表达式取值
            request.setAttribute("result", result);
            return mapping.findForward("success");
        }catch(Exception e){
            e.printStackTrace();
        }
        return mapping.findForward("error");
        }

}

其中的 mapping.findForward("success"); 也就是 为struts-config.xml提供转向页面的依据。

success.jsp 页面:计算成功显示数据

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
   ${calForma.value1}
   ${calForma.flag}
   ${calForma.value2}
   =
   ${result}
</body>
</html>

用到了EL表达式。

error.jsp页面:计算失败

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
      ${calForm.value1}
       ${calForm.flag}
       ${calForm.value2}
      失败!
</body>
</html>

页面整体效果图:

总结:经常用到的知识,不要因为简单都不总结。用非常短的时间坐下总结,以后在用到的时候有据可依!

时间: 2024-08-24 06:59:28

struts 配置过程 -一个计算器程序的相关文章

java环境配置及第一个Java程序

1.开发Java的准备 1.1java开发环境的配置 1.1.1jdk简介 ? JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具 ? Java运行环境,简称JRE他是运行程序的必须条件. ? Java运行的核心是jvm虚拟机,同时还包含其他的类加载器,字节码校验器等.**JRE还包含运行java程序的其他环境支持. ? 如果只运行Java程序,只要安装J

Python新手必备练习4---开发一个计算器程序

总是有朋友问我,在听我讲的课时感觉都能听懂,我讲的例子照着写也能做出来,但一到自己想不照抄而是自己写的时候,就发现完全没有思路,不知如何下手.对此我只能说,还是因为练习的少,平常从来不写代码,学了点语法就想啪啪啪实现复杂的功能是不现实的,学习语言是一个循序渐近的过程,不经过几万行代码的洗礼,是很难成为一个优秀的程序员的,为了帮助初学者找一些好的练习基本功的例子,我近期会整理我讲课一来的一些Python练习程序分享给大家,想学好Python的同学可以照着例子一一去做,我敢保证,把我列出的练习程序列

(二)手动配置第一个HelloWorld程序

上例的HelloWorld是由Android sutudio 自动生成的,现在我们手动来配置. 1. 重新创建工程 2. 创建空的Activity 生成的MainActivity.java 文件: package com.shyroke.myhelloworld; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompa

OGG &amp;quot;Loading data from file to Replicat&amp;quot;table静态数据同步配置过程

OGG "Loading data from file to Replicat"table静态数据同步配置过程 一个.mgr过程 GGSCI (lei1) 3> view params mgr port 7809 二.抽取进程extftor GGSCI (lei1) 4> view params extftor SOURCEISTABLE userid goldengate, password yyyyy rmthost 192.168.100.189, mgrport 7

纯javascript代码编写计算器程序

今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 具体代码如下:(关注我的博客,及时获取最新WEB前端开发源代码) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)

昨天刚刚考完编译原理,私心想着可以做一些与考试无关的东西了.一直想做和图像处理相关的东西,趁这段时间有空学习一下OpenCV,搭建环境真是一件麻烦的事情,搞了近三个小时终于OK了.先来张图: 大致描述一下步骤吧: 一.安装前准备 1.VS2012(网上看到很多用的VS2010,但是基本不影响) 2.OpenCV 安装包(我下载的是最新的2.4.9) 二.安装OpenCV 1.解压OPenCV 说是安装,其实就是解压,OpenCV的Windows安装程序就是一个自解压程序: 这里我解压到C:\Pr

程序中使用cocostudio移植到android手机需要的若干配置过程

本题就是测试读入数据的速度的. 如果有大量的数据读入,使用cin是很慢的. 那么使用scanf那么会快很多,但是如果数据量更大的话那么就还是不够快了. 所以这里使用fread. 首先开一个buffer,然后使用fread大块大块地读入数据就可以非常快地读入了. 题目如下: Input The input begins with two positive integers n k (n, k<=107). The next n lines of input contain one positive

C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具

--首发于博客园, 转载请保留此链接  博客原文地址 本文运行环境: Win7 X64, VS2010 1. SQLite 的优点: SQLite 是一款轻型数据库,开发包只有十几M, 相对于 MSSQL 几个 G 的体积来说简直是小 Case, 而且在打包成的软件里只需要添加相关的 DLL 就可以在其他的电脑运行,这一点来说比 Access 数据库还要来得方便.  SQLite虽然很小巧,但是支持的SQL语句不会太逊色于其他开源数据库. 更多详情参见百科:SQLite 2. 开发包下载 SQL

Android Studio 安装、配置及第一个程序演示

前言 Android Studio是Google推出的一款基于IntelliJ IDEA的Android集成开发工具,其类似于Eclipse ADT.在官方推出后,经不断的维护换代更新,Android Studio已经日趋完善,其强大的功能与友好的交互性能使其备受开发人员的青睐,并逐渐成为Android开发的主要工具. 安装介绍 1.下载安装包 直接在官网下载最新版安装程序:https://developer.android.com/studio/ 2.安装 打开安装包进行安装,一般默认选项即可