JAVA必备——Struts

在我们的开发中,有一个经典的框架,就是SSH,他们分别是:Struts,Spring,Hibernate,我们队他们神交已久,在以前的博客中我介绍了Hibernate,今天我们也逐步揭开Struts的神秘面纱,一起来看看这个熟悉的老朋友!

简介

首先我们还是去维基百科上看看他的介绍:

Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

不要被MVC吓住,我们马上去看看他是什么?

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(XeroxPARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

(控制器Controller)- 负责转发请求,对请求进行处理。

(视图View) - 界面设计人员进行图形界面设计。

(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

下面让我们通过一个简单的例子认识他:

实例:

Struts环境搭建

1.首先要下载struts的jar包,地址http://struts.apache.org/

2.解压后将lib文件夹里的jar包都加入到项目中

3.在webapps文件夹中解压struts-blank.war,将其中的struts-config.xml拷贝到项目中

4.配置web.xml部署ActionServlet。这个格式是相对固定的,所以一般复制即可

<span style="font-size:18px;"><servlet>
    <servlet-name>action</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>
    <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
    </init-param>
    <init-param>
        <param-name>detail</param-name>
        <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>  

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
</span>

5.配置struts-config.xml部署Action、ActionForm。其中type均为你项目中Action和ActionForm所在包的完整路径;name可以随便起,但是Action中的name必须与它用到的ActionForm的name相一致;再有就是action中要添加scope="request"这个属性,因为scope默认是session,这个可以根据实际情况自己定。

<span style="font-size:18px;"><struts-config>
    <form-beans>
        <form-bean name="loginForm" type="com.wang.struts.LoginActionForm"></form-bean>
        <!-- 可以有多个ActionForm -->
    </form-beans>  

    <action-mappings>
        <action path="/login" type="com.wang.struts.LoginAction" name="loginForm" scope="request">
            <forward name="success" path="/login_success.jsp"></forward>
            <forward name="error" path="/login_error.jsp"></forward>
        </action>
        <!-- 可以有多个Action -->
    </action-mappings>
</struts-config>
</span>

6.编写action类:

<span style="font-size:18px;">package com.action;

import java.util.Map;

import com.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class loginaction extends ActionSupport {

	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Override
	public String execute() throws Exception {

		if("admin".equals(user.getUserName()) && "admin".equals(user.getPassWord()) ){
			//System.out.println("you are success!");
			Map<String, Object> session = (Map)ActionContext.getContext().get("session");
			session.put("userName", user.getUserName());
			return "success";
		}else{
			//System.out.println("your user name is wrong !");
			return "error";
		}

		//System.out.println("hello!");
		//return super.execute();
	}

}
</span>

7.编写登陆页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>SS2_Test_Login</title>
</head>
<body>

	<form action="login">
		User login <hr/>
		User Name: <input name="user.userName" type="text"><br/>
		User PassWord: <input name="user.PassWord" type="text">
		<input id="Btn_Login" type="submit" value="OK">
	</form>

</body>
</html>

我们看看他是怎么运行的:

这个具体的运行,我们才刚刚接触,暂且认为,他就是一个三层的调用吧!

MVC体现:

而这和MVC有什么关系呢?听听百科的解释:

MVC结构[编辑]

在Struts中,已经由一个名为ActionServlet的Servlet充当控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的struts-config.xml的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。在MVC的模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应Struts里的ActionForm与Action两个需要继承实现超类。在这里,Struts可以与各种标准的数据访问技术结合在一起,包括EnterpriseJava
Beans(EJB), JDBC与JNDI。在Struts的视图(View)端,除了使用标准的JavaServerPages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如VelocityTemplates,XSLT等。通过应用Struts的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与映射关系的配置文件(struts-config.xml)中。

总结:

写完了这个测试,我们发现,Struts给我们带来了很大的方便,将后台处理和前台显示通过xml配置文件实现了自动适配,自动处理!给我们的编程带来了很大的好处,这样我们写的后台处理和前台处理代码就会带来很大的复用性!

而通过这个实例,我们对框架的理解也更深刻一点,框架是一种另外意义上的抽象,框架提供的是公共服务,他是种对横向上的抽象。通过这个例子,我们也更理解面向对象的设计了!

每一种技术的学习,其实都不难,那么难在哪呢?难在你认为他“高大上”了,其实拨开所有技术的脸皮,不还是ascii码的组合,面向对象技术,设计模式的应用吗?这么看来,这个世界,还是简单的!

JAVA必备——Struts

时间: 2024-08-13 14:53:48

JAVA必备——Struts的相关文章

JAVA必备——EJB,通向大型软件的路!

从接触java开始,就对java的标准,神交已久,今天先给大家简单介绍下,什么事ejb,然后咱们一起完成一个小例子,完成对ejb的熟悉过程,在这其间一起体会ejb带给我们的编码变化! 简介(来自百度): EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和

java:struts框架5(Converter,validation,Tags)

1.Converter: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> &

java:struts框架2(方法的动态和静态调用)

1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">

[Java Web] Struts 2

一.简述 MVC全名Model View Controller,是一种将业务逻辑.数据和界面显示分离的方法. Struts是一个基于MVC模式设计的Web应用框架,其各层结构功能如下: 模型(Model):负责管理应用程序的数据,通过响应视图的请求和控制器的指令来更新数据. 视图(View):用于应用程序中处理数据的显示.是与用户的交互页面,负责接收用户的输入信息,并将处理后的数据显示. 控制器(Controller):负责接收用户的请求和数据,并判断应当将请求交由什么模型来处理已经处理后的数据

学习Java必备网站,建议收藏!

在进入今天的主题前,先给大家分享一个资源非常丰富的网站. http://www.bangongziyuan.com/ 对,就是办公资源在线网站,为什么给大家分享这个网站呢?因为它里面有很多不同类型的PPT模板,比如常用的商业计划书PPT模板,教育培训PPT模板等,Excel模板也有很多,还有Word个人简历模板等等,这些在我们工作中都是经常需要的.创一个小群,供大家学习交流聊天如果有对学JAVA方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学JAVA能够

Android开发之Java必备基础

Java类型系统 Java语言基础数据类型有两种:对象和基本类型(Primitives).Java通过强制使用静态类型来确保类型安全,要求每个变量在使用之前必须先声明. 这种机制和非静态类型的语言有很大差别,非静态语言不要求对变量进行声明.虽然显式类型声明看起来较繁琐,但其有助于编译器对很多编程错误的预防,例如,由于变量名拼写错误导致创建了没有用的变量,调用了不存在的方法等.显式声明可以彻底防止这些错误被生成到运行代码中.关于Java类型系统的详细说明可以在Java语言规范(Java Langu

JAVA必备——13个核心规范

标准的价值: 你听过这句话吗?"一流企业做标准.二流企业做品牌.三流企业做产品!"我时我就在想,做标准的企业就是一流的?卖产品就是三流公司?而坐产品或者加工的公司,即使说销售量非常大也挣不了太多的钱,为什么呢? 简单分析: 生产仅仅是一个劳动密集型的产业,是体力劳动,而体力劳动在这个时代是拼不上脑力劳动,拼不上智慧的!这就像全部的生命诞生之初,都是白纸一张,而一个婴儿成长到成年过程,却是不同的,而这些不同恰恰成为了我们和其它人不同的地方,就像这些公司,从三流到一流是个成长的过程,我们不

java必备——经典的Hibernate

在编程开发中,我们有非常多框架,他们有些非常方便,也非常有用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为"冬眠".这是个非常有意思的技术,相同这个名字也非常巧妙! 大家先看看这个技术的书籍在国外的封面: 简单介绍: 大家知道冬眠的动物是精巧的,在冻僵的边缘,而Hibernate的一个巨大作用就是对数据持久化的实现.这两者有什么联系? 简介数据持久化: 数据持久化是解决程序与数据库之间交互訪问的问题,使程序不直接訪问数据库,而是直接訪问Ses

java必备技能

Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识.首先熟悉java基本语法,然后熟悉设计模式等. a) Java基础语法:看下面的<Java知识点列表> b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣.设计模式 的种类非常之多(设计模式大概有28种,具体请看设计模式系列 ),一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有 了这些基础原则的支持,理解