Struts2入门(一)——环境搭建和简单例子(Struts2 2.5.2版本)
一、前言
1、了解三大框架
什么是框架?
框架是一种规范,一种规则,一种把技术组织起来的规则,这就是框架。
什么是三大框架(SSH),Struts、hibernate和spring的作用是什么?
Struts主要负责层的显示,spring利用IOC和AOP来处理控制业务(负责对数据库的操作),hibernate主要作用是数据的持久性到数据库。
Struts的处理流程:
在Struts 2下载文件Struts-core-2.5.2.文件中(注意:不同jarStruts核心控制器的名称不同),StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,
它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。
默认情况下,如果用户请求的路径不带后缀或者后以.action结尾,这时请求将被转入Struts2框架处理,否则Struts 2框架将略过该请求的处理。
当请求转入Struts 2框架处理时会先经过一系列的拦截器,然后再到Action。与Struts1不同,Struts 2对用户的每一次请求都会创建一个Action,所以Struts2中的Action是线程安全的。
2、搭建Struts 2环境
(1)下载关于Struts 2所需要的jar文件,这里使用的是struts-2.5.2-all.zip,下载地址(这里)
(2)编写Struts 2配置文件,分为struts.xml
(3)在Web.xml加入Struts 2的框架启动配置
(4)笔者这里的开发环境是:Eclipse
搭建Struts 2开发环境——所需的jar包
下载完毕之后解压文件,将所需要的文件拷贝到项目的lib文件下,这里配置的是Struts 2.5所需要的配置文件
必备jar包:尤其是log4j.jar和javassist.jar为必备包
struts2-core-2.x.x.jar : Struts 2框架的核心类库
ognl-2.6.x.jar : 对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.x.jar : Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.x.x.jar : ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.1.jar: 文件上传组件,2.1.6版本后必须加入此文件
搭建Struts 2开发环境——Struts 2应用的配置文件
Struts 2默认的配置文件为struts.xml,所在位置是WEB-INF/classes下,注意:如果clesses没有的话,自行创建,然后创建struts.xml
配置模板代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--注意:有时候创建不会自动生成以下的<!DOCTYPE>,所以需要自动引入,
如果使用的是2.3或者是1点几的话,只需要将Confinuration2.5//EN和下面的struts-2.5.dtd中的2.5改变为2.3或者1.几即可-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
</struts>
搭建Struts 2开发环境——Struts 2在Web中的启动配置
在struts1.x中, struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。在web.xml中的配置如下:
<!--为Struts2定义一个过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:<!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
在StrutsPrepareAndExecuteFilter类中的init方法会读取路径下的配置文件struts.xml完成初始化操作
在读取完struts.xml的内容后,会以javabean形式存放到内容中,以后struts 2对用户的每次请求都会使用内存中的数据,而不是去读取文件。
入门例子:(该例子是官方文档例子)
在新建的struts.xml配置文件中加入配置:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="tutorial" extends="struts-default">
<!--name:可自己定义名称,class:实现类的准确路径-->
<action name="helloword" class="com.hello.HelloWord" method="execute">
<result name="success">HelloWorld.jsp</result>
</action>
</package>
</struts>
在Struts2框架中使用包来管理action,主要用于管理一组业务相关的action,实际开发中,应该把一组业务相关的Action放在同一个包下。
注意:struts.xm和Actoin配合使用,难免会使文件变得臃肿,我们可以通过<include file="文件名.xml"/>将struts.xml分割成多个。
解析struts.xml中的标签:
Action中的name属性:
配置包时必须指定name属性,可以任意命名但是必须唯一,不能对应java类名,如果要让其他包继承该包,可使用该属性进行引用。
method属性:
指定服务器调用哪个方法,默认为execute。
namespace属性:
表示命名空间,作为访问路径的一部分,如果路径是helloword.action的话,则加上/命名空间/helloword.action,如果不指定,默认为""(空字符串)
通常每个包都应该继承struts-default包, 因为Struts2很多核心的功能都是拦截器来实现。
使用Action元素必须指定系列的result元素,每个result元素定义逻辑视图和物理视图之间的映射。
result元素中type属性默认jsp为视图,可设置type的值改变数据所要显示的视图。
例子中使用的HellWord.java实现类代码:
package com.hello; import com.opensymphony.xwork2.ActionSupport; public class HelloWord extends ActionSupport { public static final String MESSAGE = "Struts is up and running ...";
private String message;
public void setMessage(String message){
this.message = message;
} public String getMessage() {
return message;
}
public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}
}
struts.xml配置文件中的HelloWord.jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>Hello World</title>
</head>
<head>
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="message" /></h2>
</body>
</html>
访问struts2中action的URL路径由两部份组成:包的命名空间+action的名称,例如访问本例子HelloWord的URL路径为:/helloworld (注意:完整路径为
http://localhost:端口/项目名称/helloworld)。另外我们也可以加上.action后缀访问此Action。
入门例子运行效果如下:
Struts2入门(一)——环境搭建和简单例子(Struts2 2.5.2版本)的更多相关文章
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- Android入门之环境搭建
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...
- 使用maven+eclipse搭建最简单的struts2的helloworld
使用maven+eclipse搭建最简单的struts2的helloworld 一.web分层结构简介 1.web[细]粒度分层结构: 按细粒度分层可以分为以下6种: 1).表现层:html/css/ ...
- 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布
Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...
- 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)
总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■ CLI是Command-Lin ...
- 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建
003-PHP基础-01-PHP快速入门 03-PHP环境搭建 1.客户端(浏览器) IE FireFox CHROME Opera Safari 2.服务器 是运行网站的基本 是放置程序代码的地方 ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
随机推荐
- Js replace() 学习笔记
最近捣鼓着学习Js,发现replace()真的很有用,替换功能杠杠的棒. 接下来看看我遇到的问题: 有两个随机给出的字符串,字符串1'xxxxxx',字符串2'====T'(这两个用作示例,其他为随机 ...
- Android-webview和js互相调用
Android-webview和js互相调用 Android 和 H5 都是移动开发应用的非常广泛.市面上很多App都是使用Android开发的,但使用Android来开发一些比较复杂附属类,提示性的 ...
- AngularJs入门之表单开发
本文和大家分享的主要是前端开发中必备的AngularJs框架表单开发相关基础知识,希望对大家使用和学习AngularJs有所帮助. 1.简单的表单提交: 2.更多的表单元素: 3.初始化表单: 代码 ...
- Sql Server系列:Insert语句
1 INSERT语法 [ WITH <common_table_expression> [ ,...n ] ] INSERT { [ TOP ( expression ) [ PERCEN ...
- 【Win10应用开发】自定义桌面壁纸
调用通用的API来设置桌面壁纸,是一件既简单又有趣的事情,结合XAML可以生成图像的特性,你甚至可以做一个应用,让用户用他所拍的照片做成一张自定义壁纸,然后作为桌面壁纸. 这个API是通用的,应用运行 ...
- 12款非常精致的免费 HTML5 & CSS3 网站模板
01. Joefrey Mahusay 很炫的单页网站模板,基于 HTML5 & CSS3 制作,适合用于设计师个人简历.摄影师和平面设计师的个人作品展示. 演示 下载 02. Folder ...
- Android实现播放视频
转载:http://www.bdqn.cn/news/201311/12100.shtml 使用VideoView播放视频 VideoView,用于播放一段视频媒体,它继承了SurfaceView,位 ...
- google浏览器截图工具 Open Screenshot(代码截图)
有的时候特别想把自己写的代码保存为图片,但是代码的内容很长,用普通的截图工具只能一次一次的拼接起来,太麻烦了.这里使用了Google的截图插件,很好用. 或者使用360极速浏览器-->保存网页也 ...
- Form authentication(表单认证)问题
前言 最近在做ASP.NET MVC中表单认证时出了一些问题,特此记录. 问题 进行表单认证时,在 PostAuthenticateRequest 事件中从Cookie值中解密票据.如下: prote ...
- (第七天)DOM练习一
动态删除元素 给定一个ul列表,点击ul中子节点进行删除 window.onload = function() { ].childNodes; () console.log(list.length); ...