课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > Java培训:Struts2的配置文件
  • Java培训:Struts2的配置文件

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-21

  • 昆明Java培训的老师今天给大家讲Struts2的配置文件。

    1、了解三大框架

    什么是框架?

    框架是一种规范,一种规则,一种把技术组织起来的规则,这就是框架。

    什么是三大框架(SSH),Struts、hibernate和spring的作用是什么?

    Struts主要负责层的显示,spring利用IOC和AOP来处理控制业务(负责对数据库的操作),hibernate主要作用是数据的持久性到数据库。

    在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的框架启动配置

    搭建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>

    昆明Java培训的老师提醒大家注意:<!--自从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 ame="success">HelloWorld.jsp</result>

    </action>

    </package>

    </struts>

    在Struts2框架中使用包来管理action,主要用于管理一组业务相关的action,实际开发中,应该把一组业务相关的Action放在同一个包下。

    昆明Java培训的老师提醒注意: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。

    推荐文章

上一篇:【昆明Java培训】 java知识点之多态

下一篇:经典的基于代理的AOP实现方式

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56