struts2入门 环境搭建和配置文件

一、Servlet PK Filter
Servlet:
void init(ServletConfig cfg);//初始化,读取Servlet的配置参数
void service(ServletRequest request,ServletResponse response);服务方法,用户的每次请求都会执行
void destory();//销毁方法
是单例的
Filter:
void init(FilterConfig cfg);//初始化,读取Filter的配置参数
void doFilter(ServletRequest request,ServletResponse response,FilterChain chain);过滤方法,用户每次访问被过滤的资源,都会执行
void destory();//销毁方法
是单例的

总结:过滤器比Servlet强大,它能够决定是否让目标执行。

实际开发:Servlet在MVC开发模型中作为控制器存在,那么Filter也可以作为控制器。
二、Struts2简介
1、SUN推出的开发模型:
模型1:JSP+JavaBean
模型2:MVC
2、Struts2是基于MVC开发模型的一个框架,属于表现层框架。(蓝色区域)
这里写图片描述
3、分析之前的案例
这里写图片描述

架都是半成品,程序员在此基础上开发实现自己业务功能的代码。框架是把程序员从繁琐的重复性的代码中解脱出来,提交开发效率。
这里写图片描述
4、Struts2的小历史
Struts2:Struts+WebWork框架
Struts1:2003左右很火。
三、搭建开发环境
1、下载Struts2的发行包。
http://struts.apache.org

2、新建一个JavaWeb工程,拷贝一下jar包到lib目录中
这里需要注意点,新版本struts2.5已经没有xwork-core包了,已经整合到struts-core中去了,下面是2.3版的需要的jar包
这里写图片描述
下面添加struts.xml文件,该文件放在src目录下,可以从下载的包里拷贝,看下图
小技巧:从Struts2发行包apps\struts2-blank\WEB-INF\lib,把其中jar都拷贝过来即可。
3、在构建路径的顶端,创建一个配置文件struts.xml
这里写图片描述
注意是struts-2.3.dtd
这里写图片描述
4、配置控制器映射:框架提供
在web.xml文件中添加下面配置
下面是新版本的配置,struts2.5版后的

 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.action.extension</param-name>
            <param-value>action,do,</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

之前struts2.3版配置
这里写图片描述
搭建完毕,下面是验证是否正确
5、验证:
部署到Tomcat中,启动,如果没有错,成功
下面是整个项目搭建后的结构图
这里写图片描述

四、第一个Struts2案例
1、Struts2的基本执行原理
这里写图片描述
a.新建一个类,添加action方法,下面是代码

package com.test.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HelloWorldAction {

    public String sayHello() {
        Map<String,Object> map = new HashMap<>(); 
        List list =new ArrayList<>();

        TestBean b = new TestBean();
        b.setAge("11");
        b.setName("tom");

        return "success";
    }



}

b、修改struts.xml配置文件

<struts>

    <constant name="struts.action.extension" value="do"/>
    <constant name="struts.decMode" value="true"></constant>

    <package name="p1" extends="struts-default">
        <action name="helloworld" class="com.test.action.HelloWorldAction" method="sayHello">
            <result name="success">/success.jsp</result>
        </action>
    </package>
</struts>

c、编写success.jsp或error.jsp页面

success.jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>title</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    成功
  </body>
</html>

d、启动访问即可
这里写图片描述

五、编写Struts.xml配置文件没有提示
a、联网
b、没有联网:手工配置一下
这里写图片描述
这里写图片描述
六、Struts2的执行过程:非常全面的图
ActionContextCleanUp,Other filters,FilterDispatcher等是过滤器
这里写图片描述
Struts拦截器在下面位置
这里写图片描述
七、Struts2的配置文件
1、Struts2框架会按照以下顺序加载配置文件
a、default.properties:struts2-core**.jar org.apache.struts包中(程序员只能看)
b、struts-default.xml:struts2-core**.jar中(程序员只能看)
c、struts-plugin.xml:在插件的jar包中(程序员只能看)
d、struts.xml:在应用的构建路径顶端。自己定义的Struts配置文件(推荐)
e、struts.properties:在应用的构建路径顶端。程序员可以编写(不推荐)
f、web.xml:配置过滤器时,指定参数。程序员可以编写(不推荐)
特别注意:顺序是固定的。后面的配置会覆盖前面的同名配置信息。

2、代码验证
Struts2的默认请求路径是.action,改为.do

此处的默认配置在default.properties中。
两个逗号,意思是,以action结尾的,或者不加action结尾,下图是default.properties中截图
这里写图片描述
下面是如何修改到这个结尾
方法一:struts.xml覆盖
在struts.xml文件中加入下面修改覆盖上面的action后即可拦截do结尾的

<constant name="struts.action.extension" value="do"/>

设置为开发模式,以后改配置文件都不用重启服务器了

<constant name="struts.decMode" value="true"></constant>

方法二: struts.properties覆盖
这里写图片描述
方法三: web.xml覆盖
这里写图片描述
3、更改Struts2默认的参数
StrutsPrepareandExcecuteFilter拦截所有请求,然后满足后缀的才去核心框架那边拦截
这里写图片描述
下面是参数说明:
这里写图片描述
这里写图片描述
4、package元素:(相当于java中的包)
意义:分模块开发。
属性:
a、 name:必须的。配置文件中要唯一。就是一个名字。
b、 extends:指定父包。会把父包中的配置内容继承下来。一般需要直接或间接的继承一个叫做“struts-default”的包(在struts-default.xml配置文件中)。如果不继承该包,那么Struts2中的核心功能将无法使用。
c、 abstract:是否是抽象包。没有任何action子元素的package可以声明为抽象包。
d、namespace:指定名称空间。一般以”/”开头。该包中的动作访问路径:namesapce+动作名称。如果namespace=””,这是默认名称空间,和不写该属性是一样的。

默认名字空间最后找,如果之前找到了,就算默认名字空间里有同名的action也不理了,下面是原理图
这里写图片描述
5、action元素
作用:定义一个动作。
属性:
a、 name:必须的。动作名称。用户用于发起请求。在包中要唯一。
b、 class:指定动作类的全名。框架会通过反射机制实例化。不写默认是:com.opensymphony.xwork2.ActionSupport。
c、 method:指定动作类中的动作方法。框架会执行该方法。默认是execute()。
八、动作类:
1、编写动作类的三种方式:
方法一: POJO(Plain Old Java Object)普通的JavaBean。
这里写图片描述
方法二:实现com.opensymphony.xwork2.Action接口(struts1里的特点)
这里写图片描述
Action接口中的常量:
String SUCCESS:success。一切正常。
String NONE:none。动作方法执行后,不转向任何的结果视图。或者在动作方法中返回null。
String ERROR:error。动作方法执行时遇到异常,转向错误提示页面。
String INPUT:input。验证、转换失败,转向输入页面。
String LOGIN:login。检测用户是否登录,没有登录转向此视图。

方法三:继承com.opensymphony.xwork2.ActionSupport(推荐)
意义:提供了一些基本的功能。比如验证和国际化消息提示等。
这里写图片描述
2、动作类中的动作方法
编写要求:public String XXX(){}
3、动作通配符映射
这里写图片描述
这里写图片描述
细节:
存在多个匹配的情况:
优先级如下
绝对匹配—–>按照通配符匹配的配置顺序为准。
4、动态方法调用:DMI(Dynamic Method Invocation)
这里写图片描述
在访问时指定执行的动作方法:
http://localhost:8080/XXX/demo4!m1 执行demo4动作对应动作类的m1动作方法

默认情况下:会报错,说找不到demo4!m1这个动作方法。因为struts2框架默认是禁止动态方法调用的。
这里写图片描述
注意:不建议使用。容易暴露动作类中的动作方法,害怕非法执行。
九、动作类中获取ServletAPI
方式一:推荐。简单
这里写图片描述
方式二:麻烦。
这里写图片描述
原因:
拦截器(servletConfig)给你注入的这些实例。

源码下载地址:https://download.csdn.net/download/u014204541/10298304

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值