搭建一个strust1环境_阿良的空间的博客-程序员秘密

技术标签: strust1  javaweb  

Struts是apache一个基于MVC 模式的web应用开源框架,它是一个基于请求驱动的MVC模式。利用Strust开源框架,能提高web开发效率,使用少量代码就可以达到servlet中一些复杂的操作,它对serlvet进行了封装。

搭建Struts开发环境需主要有如下几部:

1.导入struts相关jar包,主要的jar包有(以1.3.8为例)

2.配置web.xml,主要是用来配置哪些请求处理有struts的actionServlet来处理。

  <servlet>
  	<servlet-name>ActionServlet</servlet-name>  <!-- struts处理的请求的action,由struts编写,不需开发者编写 -->
  	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class><!--actionServlet类 -->
  	 <init-param>
      		<param-name>config</param-name>
      		<param-value>/WEB-INF/struts-config.xml</param-value><!--配如何处理每个action -->
    	</init-param>
   	 <load-on-startup>2</load-on-startup> <!-- 指定web应用启动时加载此actionServlet -->
  	
  </servlet>
  
  <servlet-mapping>  
  	<servlet-name>ActionServlet</servlet-name>
  	<url-pattern>*.do</url-pattern><!--指定所有.do请求都有struts来处理  -->
  </servlet-mapping>
3.actionServlet是struts的中央处理器,所有请求都将转发到actionServlet,actionServlet将会调用每个具体的action,至于调用哪个action,将会在struts-config.xml中进行配置,此配置默认放在WEB-INF目录下。

<struts-config>
	<form-beans>
		<form-bean name="UserFormBean" type="cn.itcast.web.formbean.UserFormbean"></form-bean>
	</form-beans>

	<!-- 配置struts收到请求后找一个action处理 -->
	<!-- path指的是对应的action,即web页面输入的Register.do,它将找type对应的action类来处理,name指定FormBean,它将会把请求消息的参数封装到一个bean对象中,此bean对应form-beans标签中的type指定的bean-->
	<action-mappings>
		<action path="/Register" type="cn.itcast.web.action.RegisterAction" name="UserFormBean"></action>
	</action-mappings>

</struts-config>
Stuts执行流程图如下所示:

开发者编写的Action需要实现Action接口,相关开发代码在此接口的exectue方法中执行,此方法最终返回一个actionForwad对象,此对象封装了要跳转的页面。图中的Action

下面是上例代码:

//UserFormBean

public class UserFormbean extends ActionForm {

	private String username;
	private String password;
	private String email;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}	
}
/ /负责执行的Register的RegisterAction

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

import cn.itcast.web.formbean.UserFormbean;

public class RegisterAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		
		UserFormbean bean = (UserFormbean) form;
		System.out.println(bean.getUsername());
		System.out.println(bean.getPassword());
		System.out.println(bean.getEmail());
		
		
		try{
			System.out.println("向数据注册用户!!");
			request.setAttribute("message", "注册成功");
			
		
		}catch (Exception e) {
			request.setAttribute("message", "注册失败");
			
		}
		
		return mapping.findForward("message");
	}	
}
web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <servlet>
  	<servlet-name>ActionServlet</servlet-name>
  	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  	 <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  	
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>ActionServlet</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
struts-config.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>

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

<struts-config>
	<form-beans>
		<form-bean name="UserFormBean" type="cn.itcast.web.formbean.UserFormbean"></form-bean>
			
	</form-beans>

	<!-- 配置struts收到请求后找一个action处理 -->

	<action-mappings>
		<action path="/Register" type="cn.itcast.web.action.RegisterAction" name="UserFormBean"></action>
		
               <forward name="message" path="/message.jsp"></forward>

	</action-mappings>

</struts-config>


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wliang11/article/details/20492203

智能推荐

robotframework 自动化测试 (一)环境搭建_蘑菇ding的博客-程序员资料

最近开始接触编写自动化测试用例,要搭建 robot framework 环境,配置了将近一天,记录以备以后参考:环境:win10首先列出要下载安装的一些东西:1、安装pythonhttps://www.python.org/ 双击运行,选好路径直接安装就OK(我的路径D:\Python27)...

ffmpeg android 编译选项,FFmpeg学习—android 编译 ffmpeg 集成fdk-aac、x264 精简解码库..._哇塞5G的博客-程序员资料

#!/bin/bashNDK="/home/wh/android-ndk-r12b"SYSROOT=$NDK/platforms/android-9/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64function build_one{./configure --prefix=$PR...

苹果7防水吗_苹果手机到底防不防水?_weixin_39895181的博客-程序员资料

苹果手机到底防不防水问题,分享一下自己的看法吧:迄今为止,没有一款 iPhone是真正意义的防水。苹果7代以前的机器不用说,没有任何的防水性能。7代以后屏幕四圈增加了密封胶,卡槽,按键设计了防水胶垫,但这些只能说密封性大大提高,只能防止生活水溅,小的雨水,手汗之类的,而不是能完全抵抗水龙头直接冲洗或者整个浸泡到水里那种。手机内部元器件精密复杂,进水受潮会有很大影晌,后期出问题的概率非常大,有的用户...

win10上编译flink1.10.0以运行在cdh6.3.0环境中_benpaodexiaowoniu的博客-程序员资料

在https://github.com/apache/flink/releases处点击下载flink-release-1.10.0.tar包,在win10的apache-maven-3.5.4中配置阿里源虽然阿里源https://maven.aliyun.com/mvn/view可以看到网友普遍使用的下面的库: &lt;mirror&gt; &lt;id&gt;alim...

电子计算机专业vs土木工程专业,2021工科就业前景好的专业排名_weixin_39917291的博客-程序员资料

2021工科就业前景好的专业排名2021-01-19 16:45:21文/陈宇航本文中,小编整理了工科就业前景好的专业排名,快来看看吧!工科就业前景好的专业排名1.土木工程专门培养掌握各类土木工程学科的基本理论和基本知识,能在房屋建筑、地下建筑、道路、隧道、桥梁建筑、港口及近海结构与设施工作的人员。2.机械设计制造及其自动能在机械工程领域从事机械产品研发、设计、制造、项目管理等工作的复合型工程技术...

BZOJ 4540: [Hnoi2016]序列 莫队算法_NOIAu的博客-程序员资料

Time Limit: 20 Sec Memory Limit: 512 MB Submit: 1412 Solved: 663Description给定长度为n的序列:a1,a2,…,an,记为a[1:n]。类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar。若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列。现在有q个询问,每个询问给定两个数l

随便推点

electron-vue项目 自动更新解决方案(附代码)_凉音、的博客-程序员资料

electron-vue的创建过程这里不再赘述。相信已经搜索到这篇文章的你,已经完成了这个过程,下面我们进入正题前言如果您的electron版本还是2.xx版本,需要更新electron版本,更新方式戳这里https://blog.csdn.net/weixin_43272648/article/details/104339699第一步,安装electron-updater依赖npminstallelectron-updater--save第二步,配置packa...

扒一扒国内做得比较优秀的无人机倾斜摄影公司_济南赛尔无人机的博客-程序员资料_倾斜摄影无人机

倾斜摄影技术在国内崛起说实话倾斜摄影虽然是作为一项国外引进的航空摄影技术,行业核心软件smart3D(CC)也是歪果仁出品,国内出的几款做实景三维的软件不客气的说大部分是处于又贵效果又不好的状态,毕竟软件开发是高投入高风险。言归正传,倾斜摄影技术的诞生促进了倾斜摄影硬件产品的发展,这一点,国内公司的产品研发和技术实力可以说不比国外的弱,如果能在国内找到适合的倾斜摄影产品和服务团队,就不必去...

vue-cli3 多页面 RangeError: Maximum call stack size exceeded_Ray_1234567的博客-程序员资料

昨天给项目配置vue多页面,结果一跑起来就报错: RangeError: Maximum call stack size exceeded - Array.join - loader.js:228 Function.Module._findPath internal/modules/cjs/loader.js:228:56 - loader.js:591 Funct...

【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)及制作简单遮盖层!..._weixin_33690963的博客-程序员资料

最近写了不少Cocos2d的博文了,那么由于Himi介绍的一般都是比较容易出错的问题或者比较受到关注的知识点,所以不少童鞋要求写个基础篇,那么这里Himi就举例最常用的精灵CCSprite来详细的介绍一些吧; 考虑到网上对于Cocos2d-iphone的中文教程已有很多,所以这里Himi会拿出一些教程没有提到的基础知识点来分享; 首先我们来创...

SpringBoot - 解决跨域请求问题_瞎胡扯的博客-程序员资料_allowedheaders

现在项目开发中,前后端分离越来越流行了,但在前后端分离通过 Ajax访问时会存在一个跨域的问题。即由于浏览器的安全性限制,不允许AJAX访问协议不同、域名不同、端口号不同的数据接口,否则会出报No 'Access-Control-Allow-Origin' header is present on the requested resource.错误。如下所示:强大的 Spring Boot支持通过设置CORS(跨源资源共享)来解决跨域请求问题。具体如下几种方式可以进行配置,我们选择一种...

bpmn-js起步_Zack_ZXY的博客-程序员资料_bpmn-js

通过本文逐步熟悉bpmn-js。 快速介绍:bpmn.js是一个BPMN2.0渲染工具包和web建模器。使用JavaScript编写,在不需要后端服务器支持的前提下向现代浏览器内嵌入BPMN2.0流程图。这使得它很容易的嵌入到任何web应用中。 这个库既可以是web查看器也可以是web建模器。使用查看器将BPMN2.0流程图嵌入到你的应用中并可以使用数据丰富你的流程图。使用建模...

推荐文章

热门文章

相关标签