struts2学习笔记 -- day02 struts2主配置文件详解

来源:互联网 发布:淘宝食品备案流程图 编辑:程序博客网 时间:2024/06/06 06:29

一、入门案例

1、编写Action动作类

package cn.itcast.web.action;/** * 用于处理请求的类 *  * 在struts2中把用于处理请求类都称之为:动作类 * */public class HelloAction {/** *  用于处理请求的方法 *   *  把动作类中用于处理请求的方法都叫做:动作方法 *   *  动作方法有编写规范: *  访问修饰符都是public *  返回值必须是String类型的 *  方法不能有参数 * @return */public String sayHello(){System.out.println(this);System.out.println("HelloAction中的sayHello方法执行了。。。。");return "success";}}

2、配置struts.xml配置文件

<package name="p1" extends="struts-default"><action name="hello" class="cn.itcast.web.action.HelloAction" method="sayHello"><result name="success" type="dispatcher">/success.jsp</result></action></package>

3、编写jsp

<%@ 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>struts2的入门案例</title></head><body><%--struts2框架它默认会拦截以.action为后缀的请求,或者是没有任何后缀的请求 --%><a href="${pageContext.request.contextPath}/hello.action">访问struts2的入门案例.action</a><hr/><a href="${pageContext.request.contextPath}/hello">访问struts2的入门案例</a></body></html>

二、struts2的执行流程


三、struts2中的配置文件

1、struts2的 6 个配置文件

default.properties、struts-default.xml、struts-plugin.xml、struts.xml、struts.properties、web.xml

加载时机是:在项目启动时就开始加载。

加载顺序:按照上述顺序加载。

注意:遇到相同的配置信息时,后加载的会覆盖先加载的

2、default.properties配置文件

注意:default.properties中的内容坚决不允许改动

(1)、位置:


3、struts-default.xml

注意:该配置文件内容不能修改

位置:


4、struts-plugin.xml

位置:插件包jar包中,没有导插件包时不存在

5、struts.xml 和 struts.properties

位置都在应用中,用于配置我们自定义的参数,推荐使用struts.xml进行配置

6、web.xml

作用:给过滤器配置参数

四、struts.xml中标签详解

1、constant标签

(1)、作用

        配置struts2的常量

        键值对形式,key、value

<!-- 开启开发者模式 --><constant name="struts.devMode" value="true"></constant>

(2)、常用的常量


2、package标签

<!-- package标签详解:作用:建立一个包,把我们的动作配置按照面向对象的思想来管理。属性:name:指定包的名称。必须写,必须唯一。extends:指定当前包的父包。子包自动具备父包的配置。我们的包一般都需要继承struts-default包。该包中配置着struts2的核心,如果不继承该包,则不能使用struts2的核心。struts-default包在struts-default.xml配置文件中定义着。abstract:把当前包声明为抽象包。抽象包就是用来被继承的。里面定义的公共配置。 只有没有action标签的包,才能声明为抽象包。namespace:指定当前包的名称空间。当包上指定了名称空间之后,访问URL就变成了:url = 名称空间+action标签的name取值它的作用就是把访问URL按照模块化来管理。名称空间的写法:必须以/开头后面的第一个字符必须是字母。例如:/n  /n1  /namespace1  访问URL就变成了:/n1/hello体现模块化管理URL的例子:名称空间是:/user访问URL:/user/addUser.action   /user/updateUser.action.....当我们不指定名称空间时,它有默认值:默认值是:""--><package name="myDefualt" extends="struts-default" abstract="true"> <!-- 此处定义的就是当前项目中的公共配置 --></package><package name="p1" extends="myDefualt" namespace="/n1"><action name="hello" class="cn.itcast.web.action.HelloAction" method="sayHello"><result name="success" type="dispatcher">/success.jsp</result></action></package>

3、action标签

<package name="p1" extends="struts-default"><!-- action标签详解:作用:建立动作名称,动作类和动作方法的对应关系。属性:name:指定动作名称。它不能重复class:指定动作类的全限定类名。method:指定动作方法名称。创建动作类的三种方式:第一种方式:无侵入式的创建实际开发中不常用例子:HelloAction。它的特点就是:没有任何struts2的代码体现。第二种方式:实现Action接口的方式实际开发中用的也不多例子:Hello2Action它的特点就是:Action接口中定义了一些常量,还是没有一些核心内容定义。默认动作方法:execute方法。当我们执行此方法时,可以不指定method属性第三种方式:继承ActionSupport实际开发中采用的方式例子:Hello3Action默认动作类:ActionSuppor是默认动作类--><action name="hello" class="cn.itcast.web.action.HelloAction" method="sayHello"><result name="success" type="dispatcher">/success.jsp</result></action></package><!-- 使用通配符来配置 --><package name="user" extends="struts-default"><action name="*" class="cn.itcast.web.action.UserAction" method="{1}"><result name="success" type="dispatcher">/success.jsp</result></action></package><!-- 升级通配符 --><package name="user" extends="struts-default"><action name="*_*" class="cn.itcast.web.action.{2}Action" method="{1}{2}"><result name="success" type="dispatcher">/success.jsp</result></action></package> 

动态方法调用

struts.xml中:

<!-- 开启动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation" value="true"></constant><package name="user" extends="struts-default"><action name="user" class="com.itheima.web.action.UserAction" ><result name="success">/success.jsp</result></action></package>

jsp页面中:

<a href="${pageContext.request.contextPath}/user!addUser.action">添加用户</a><a href="${pageContext.request.contextPath}/user!updateUser.action">修改用户</a><a href="${pageContext.request.contextPath}/user!deleteUser.action">删除用户</a><a href="${pageContext.request.contextPath}/user!findUser.action">查询用户</a>

4、result标签

作用:配置结果视图的地址

<action name="demo1" class="cn.itcast.web.action.Demo1Action" method="demo1"><!-- result标签:作用:配置结果视图的地址。属性:  name:用于和动作方法的返回值比较,当一致时前往指定的位置。  type:用何种方式前往(请求转发,重定向)  常用的取值:  dispatcher:请求转发到一个指定jsp页面(默认值)  redirect:重定向到一个指定的jsp页面或者是一个action  redirectAction:重定向到一个指定的action--><result name="login">/success.jsp</result><result name="error" type="redirect">/error.jsp</result><result name="findAll" type="redirect">findAllCust</result><result name="findAll" type="redirectAction">findAllCust</result></action>

五、创建动作类的三种方式

1、无侵入式

特点:没有任何struts2代码的体现,实际开发中不常用

public class HelloAction {public String sayHello(){System.out.println(this);System.out.println("HelloAction中的sayHello方法执行了。。。。");return "success";}}

2、实现Action接口

特点:Action接口中定义了一些常量,还是没有一些核心内容定义。

默认的动作方法:execute方法。当我们执行此方法时,可以不指定method属性

import com.opensymphony.xwork2.Action;public class Hello2Action implements Action {@Overridepublic String execute() throws Exception {System.out.println("Hello2Action的execute方法执行了");return ERROR;}}

3、继承ActionSupport方式

import com.opensymphony.xwork2.ActionSupport;public class Hello3Action extends ActionSupport {}