Struts2第一章

 

 

第一章Struts2初体验

01.Struts 2及其优势

Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点

 

Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性

 

 

Struts官网

http://struts.apache.org/

 

apps目录:Struts2示例应用程序

docs目录:Struts2指南、向导、API文档

lib目录:Struts 2的发行包及其依赖包

src目录:Struts 2项目源代码

02.Struts 2初体验(登陆用户)

案例:使用Struts 2实现:输入用户姓名,然后输出欢迎信息

 

 

 

 

使用Struts 2 开发程序的基本步骤

1、加载Struts2 类库

2、配置web.xml文件

3、开发视图层页面

4、开发控制层Action

5、配置struts.xml文件

6、部署、运行项目

 

 

 

步骤一:加载struts类库

 

 

 

 

因为我们用的是maven所以引入以下依赖,maven会帮我们自动导入其他包:

 

<!--Servlet API-->
<dependency>
    <groupId>javaee</groupId>
    <artifactId>javaee-api</artifactId>
    <version>5</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.16.3</version>
</dependency>


<!-- https://mvnrepository.com/artifact/org.apache.struts.xwork/xwork-core -->
<dependency>
    <groupId>org.apache.struts.xwork</groupId>
    <artifactId>xwork-core</artifactId>
    <version>2.3.16.3</version>
</dependency>

 

 

 

步骤二:配置web.xml文件

 

 

 

代码:

 

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--过滤器-->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <!--拦截所有方法-->
    <url-pattern>/*</url-pattern>
  </filter-mapping>



</web-app>

 

步骤三:开发视图层页面

 

 

 

 

 

步骤四:开发控制层Action

实现Action接口并重写方法:

 

零散属性装配

 

 

 

 

public class LoginAction implements Action {
    private String username;
    private String password;
    public String execute() throws Exception {
        if (username.equals("admin")&&password.equals("admin")){
            return SUCCESS;
        }else {
            return LOGIN;
        }

    }

 

 

步骤五:配置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 ">
<struts>
    <!-- 配置文件中只要添加以下配置,那么以后修改配置文件不用重启tomcat -->
    <constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<!--零散属性装配-->
    <action name="islogin" class="cn.happy.day01.LoginAction">
        <result name="success">day01/index.jsp</result>
        <result name="login">day01/login.jsp</result>
    </action>
</package>

</struts>

 

步骤六:部署,运行项目

 

 

 

 

 

 

 

 

 

03.登陆系统强化

 

域属性装配:

首先创建一个实体

 

 

 

 

 

 

 

修改Action

 

 

 

 

public class LoginActions implements Action {
    //引入实体
    private UserInfo userInfo;
    public String execute() throws Exception {
        if (userInfo.getUsername().equals("admin")&&userInfo.getPassword().equals("admin")){
            return SUCCESS;
        }else {
            return LOGIN;
        }

    }

 

 

修改登陆页面:

 

 

修改欢迎页面:

 

 

 

 

 

ModelDriven

Action实现另外一个接口即可!

 

 

 

 

 

 

即可避免jsp页面的不灵活问题!

 

 

 

04.Struts2访问Servlet API

servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢?

    解析:将用户名放入session 两种方案

1. Servlet API解耦的访问方式

    --->01.使用ActionContext类获取ServletAPI对象对应的Map对象

    --->02.Struts2Action注入ServletAPI对象对应的Map对象

 

  1. Servlet API耦合的访问方式

--->01.通过ActionContext的子类ServletActionContext实现

    --->02.Action实例注入Servlet API对象

 

解耦方式:

方案一: Servlet API进行封装   ,借助ActionContext

供了三个Map对象访问requestsessionapplication作用域

 

 

 

 

 

方案二:向Action中注入ServletAPI对象对应的Map对象

 

 

 

 

 

耦合方式:

方案一:通过ActionContext的子类ServletActionContext实现

 

 

 

 

 

    方案二:向Action实例注入Servlet API对象

 

 

 

 

 

05.Struts2开发流程图

 

 

posted on 2018-02-26 13:50  我是谁0202  阅读(156)  评论(0编辑  收藏  举报