struts2框架入门

本文深入解析了Struts2框架的工作原理,详细介绍了其核心文件结构,包括web.xml、struts.xml和struts.properties的作用。阐述了Action的搜索顺序、动态方法调用机制及配置多个文件的方法。此外,还讲解了默认action的设置、后缀名配置以及如何通过三种方式接受参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.struts2的工作原理和文件结构


2.struts2核心文件

struts核心文件包括:

1)web.xml

2)struts.xml

3)struts.properties


3.Action搜索顺序


4.动态方法调用

其实意思就是,当多个不同请求到来的时候,势必会要求多个Action。一个Action中添加多个method,处理不同的请求,返回不同的视图资源!

动态方法调用有3种形式

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

1)在配置文件中添加method属性

2)感叹号

3)通配符方式 *


5.指定多个配置文件

<include file="......"></include>

如果Action太多,写在一个xml文件中就会很不方便,可以分散配置,用include聚合!


6.默认action,当struts中没有配置请求的Action,可以设置默认的action,指定跳转视图。

<default-action-ref name="index"></default-action-ref>
<action name="index">
    <result>/error.jsp</result>
</action>

7.struts2后缀名

jsp,do,html,....可以在三个核心文件中配置,任何一个都行,可用于视图伪装

在web.xml中配置后缀为do的实现

<?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">
    <display-name>Struts Blank</display-name>
    
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.action.extension</param-name>
            <param-value>do</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

 


8.接受参数

1)action属性接受

2)Domain Model 接收

3)Model Driven接收(推荐) 

      实现ModelDriven<T>接口

用第三种方式写一个前端实例,接受用户名密码,控制页面跳转到成功登陆。

LoginAction继承ModelDriven<T>接口,实现getModel方法。

package com.southstar.demo;

import com.opensymphony.xwork2.ModelDriven;

public class LoginAction implements ModelDriven<User>{
    @Override
    public User getModel() {
        return user;
    }
    
    private User user=new User();
    
    public String login(){
        System.out.println(user.getUsername());
        
        return "success";
    }
    public String add(){
        return "success";
    }

}

login.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="LoginAction" method="post">
    用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    年龄:<input type="text" name="age">
    <input type="submit" value="提交"/>

</form>
</body>
</html

User对象类

package com.southstar.demo;

public class User {
    private String username;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private String password;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private int age;


}

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
登陆成功!
</body>
</html>

web.xml

<?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">
    <display-name>Struts Blank</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>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="hello" namespace="/" extends="struts-default">

        
        <default-action-ref name="index"></default-action-ref>
        <action name="index">
            <result>/error/no.jsp</result>
        </action>


        <action name="LoginAction" method="login" class="com.southstar.demo.LoginAction">
            <result name="success">/success.jsp</result>
            <result name="input">/login.jsp</result>
        </action>
        
        <!--
        <action name="sayHi" method="sayHi" class="com.southstar.demo.HelloAction" >
            <result name="success">/hello/sayHi.jsp</result>
        </action>-->
    </package>
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
</struts>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值