Struts2

1.Struts2入门1.1 入门案例添加struts2相关依赖添加web.xml,加载struts2配置编写index.jsp页面编写Action控制器编写struts.xml文件1.1.1 添加struts2相关依赖在pom.xml文件中加入struts2的依赖代码<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</a
摘要由CSDN通过智能技术生成

1.Struts2入门

1.1 入门案例

  1. 添加struts2相关依赖
  2. 添加web.xml,加载struts2配置
  3. 编写index.jsp页面
  4. 编写Action控制器
  5. 编写struts.xml文件

1.1.1 添加struts2相关依赖

在pom.xml文件中加入struts2的依赖代码

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-core</artifactId>
  <version>2.5.22</version>
</dependency>

1.1.2 添加web.xml,加载struts2配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

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

</web-app>

1.1.3 编写index.jsp页面

<%--
  Created by IntelliJ IDEA.
  User: ZhuZhengbin
  Date: 2021/4/2
  Time: 12:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="hello.action">
    <div><label for="username">用户名:</label><input id="username" name="username" type="text"></div>
    <div><label for="password">密码:</label><input id="password" name="password" type="password"></div>
    <div><label for="submit"></label><input id="submit" type="submit"></div>
</form>
</body>
</html>

1.1.4 编写Action控制器

​ 控制器要去实现Action接口,属性驱动机制的属性名要和表单的name属性一致

package cn.zhengbin.action;

import com.opensymphony.xwork2.Action;

public class HelloAction implements Action {
   

    public String getUsername() {
   
        return username;
    }

    public void setUsername(String username) {
   
        this.username = username;
    }

    /**
     * 定义变量,接受页面的用户名username
     * 要求:属性名必须与input标签的name属性一直
     * 提供getter/setter方法
     */
    private String username;

    @Override
    public String execute() throws Exception {
   
        System.out.println("username:" + username);
        return SUCCESS;
    }
}

1.1.5 编写struts.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <!--  
        package标签:该标签配置控制器的包结构
            name属性:自定义,必须保证唯一,与编码没有任何关系,用于区分package
            extends属性:继承某个package,其中struts-default是struts2框架的核心
            namespace属性:命名空间,默认为 “/” (根目录)  
    -->
    <package name="default" extends="struts-default" namespace="/">

        <!--    
            action标签:配置访问请求
                name属性:访问路径
                class属性:访问该路径要执行的控制器
        -->

        <action name="hello" class="cn.zhengbin.action.HelloAction">

            <!--
                result标签:配置返回的页面
                    name属性:属性值可以自定义,必须与控制器返回的逻辑字符串一致
            -->

            <result name="success">/show.jsp</result>
        </action>
    </package>
</struts>

1.2 Struts初体验

1.2.1 使用Struts2开发程序的基本步骤

  1. 加载Struts2类库
  2. 配置web.xml文件
  3. 开发视图层页面
  4. 开发控制器层Action
  5. 配置struts.xml文件
  6. 部署、运行项目

1.2.2 Struts2类库

如果用的不是maven项目,必须把这些包全部加到项目中才能用,否则用不了,xxx表示版本号

文件名 说明
struts2-core-xxx.jar Struts2框架的核心类库
xword-core-xxx.jar XWork类库,Struts2的构建基础
ognl-xxx.jar Struts2使用的一种表达式语言类库
freemarker-xxx.jar Struts2的标签模板使用类库
javassist.xxx.GA.jar 对字节码进行处理
commons-fileupload-xxx.jar 文件上传时需要使用
commons-io-xxx.jar Java IO扩展
commons-lang-xxx.jar 包含的一些数据类型的工具类

1.2.3 接受表单数据

定义变量,接受页面的用户名username,要求属性名必须与input标签的name属性一致,必须提供getter/setter方法,省去了request.getParameter()的步骤

/**
 * 定义变量,接受页面的用户名username
 * 要求:属性名必须与input标签的name属性一致
 * 提供getter/setter方法
 */
private String username;

public String getUsername() {
   
    return username;
}

public void setUsername(String username) {
   
    this.username = username;
}

1.2.4 输出结果

在JSP页面中输出结果的方式有两种,分别是:

  1. EL表达式,例如:${username}
  2. struts2标签,例如<s:property value="username" />

注意:

  1. struts2标签不能使用其他表达式,如:在struts2标签中使用EL表达式,会报错
  2. 使用struts2标签输出结果,必须在页面中映入相应的标签库<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<p>用户名:${username}</p>
<p>用户名:<s:property value="username" /></p>
</body>
</html>

1.3 Struts2 配置文件(struts.xml)

1.3.1 struts.xml

  1. struts.xml配置文件是struts2框架的核心配置文件,主要负责管理Action
  2. 通常放在WEB-INF/classes目录下,也可以在resource资源目录下,在该目录下的struts.xml文件可以被自动加载
<struts>
    <constant name="" value=""/>
    <package name="" extends="" namespace="">
        <action name="" class="">
            <result name=""></result>
        </action>
    </package>
</struts>

1.3.2==< constand>==标签

  1. 配置常量,可以改变Struts2框架的一些行为
  2. name属性表示常量名称,value属性表示常量值
<!--    开启动态方法调用        -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

1.3.3 ==< package>==标签

  1. 包的作用:简化维护工作,提高重用性
  2. 包可以“继承”已定义的包,并可以添加自己包的配置
  3. name属性位必须且唯一,用于指定包的名称
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <!--    开启动态方法调用        -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    <!--    设置公共模板    -->
    <package name="default" extends="struts-default">
        <!--    2.5版本要设置白名单     -->
        <global-allowed-methods>regex:.*</global-allowed-methods>
    </package>

    <package name="user1" extends="default" namespace="/">
        <action name="login" class="cn.zhengbin.actions.UserAction">
            <result>/success.jsp</result>
        </action>
    </package>

    <package name="user2" extends="default" namespace="/user">
        <action name="user" class="cn.zhengbin.actions.UserAction">
            <result>/success.jsp</result>
        </action>
    </package>

    <package name="user3" extends="default" namespace="/">
        <action name="*" class
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值