Struct2基础学习笔记

1.概述

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
总的来说Struts 2就是一个过滤器

2.Struts2环境搭建

1.导包

核心包:
这里写图片描述

2.添加Struts2配置文件 Struts.xml

在src目录下添加struts.xml配置文件

3.配置核心过滤器

在web.xml下配置Struts2核心过滤器

  <!-- 配置Struts2 -->
  <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>

3.Struts2完成简单用户信息获取

默认结构:
这里写图片描述

界面:
index.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>Insert title here</title>
</head>
<body>
    Hello Struts2<br>
    <!-- 框架会将数据自动保存入值栈之中,所以我们可以直接拿到 -->
    user: <s:property value="user"/><br>
    password:<s:property value="password"/><br> 
</body>
</html>

login.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>Insert title here</title>
</head>
<body>
    <form action="${pageContext.request.contextPath }/login.action" method="post">
        <input type="text" name="user">
        <input type="password" name="password">
        <input type="submit" value="提交">
    </form>
</body>
</html>

LoginAction.java

/**
 * 继承ActionSupport来创建Action
 * @author LGX
 *
 */
public class LoginAction extends ActionSupport{


    /**
     * 使用属性驱动的方式获取参数值
     * 具体操作:声明变量,提供get/set方法,这样框架就会将对应的值自动注入
     */
    private String user;
    private String password;

    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }


    /**
     * Struts2 编写操作时有固定格式
     * 1.必须是public
     * 2.返回值必须是String
     * 3.方法不能有参数
     */
    public String execute() throws Exception {

        System.out.println(this.user + ":" + this.password);

        return SUCCESS;
    }
}

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>
    <!-- 编写配置文件 -->

    <!--
        package属性

        * name 包的名称,要求是唯一的,管理action配置
        * extends 继承,可以继承其他的包,只要继承了,那么该包就包含了其他包的功能,一般都是继承struts-default 
        * namespace 名称空间,一般与<action>标签中的name属性共同决定访问路径(通俗话:怎么来访问action),常见的配置如下 
            namespace="/" 根名称空间 
            namespace="/aaa" 带有名称的名称空间 
        * abstract 抽象的。这个属性基本很少使用,值如果是true,那么编写的包是被继承的 
    -->

    <package name="demo01" extends="struts-default" namespace="/">
        <!-- 
            action属性
            * name          和<package>标签的namespace属性一起来决定访问路径的
            * class         配置Action类的全路径(默认值是ActionSupport类)
            * method        Action类中执行的方法,如果不指定,默认值是execute
        -->
        <action name="login" class="com.fjut.test.LoginAction" method="execute">
            <!-- 
                result属性
                * action类中方法执行,返回的结果跳转的页面
                * name      结果页面逻辑视图名称
                * type      结果类型(默认值是转发,也可以设置其他的值)
             -->
            <result name="success">/demo01/index.jsp</result>
        </action>
    </package>


</struts>

web.xml

添加过滤器
代码同上

结果:
这里写图片描述

这里写图片描述

控制台:

123456:123456

4.Struts2的运行流程

5.Struts2的常见配置

6.Struts2的Action的访问

7.Struts2使用Servlet API

8.Struts2接收请求参数(例如:表单数据提交)

9.Struts2自定义拦截器

10.OGNL表达式

11.Struts2值栈

猜你喜欢

转载自blog.csdn.net/l1336037686/article/details/80352858
今日推荐