struts2学习笔记1

Struts2学习笔记1

一项目构建
1.导入jar包
2.页面编写jsp文件,提交路径是xxx.action
3.在struts.xml中配置

<package name="zwz" namespace="/" extends="struts-default">
    <action name="first.action" class="web.action.FirstAction">
        <result name="success">/success.jsp</result>
    </action>
</package>

其中<action name="xxx" class="action处理的全路径">
4.在类中编写方法原型
public String execute(){}
5.执行完后返回一个String
6.去配置中找action中的

<result name="返回的String" type="">页面路径</result>

type:默认是dispatcher(转发到页面)
chain:转发到action
redirect:重定向到页面
redirectAction:重定向到action

二在Action中接收页面的值有2种方式
实体对象类:

package pojo;

import java.io.Serializable;

public class User implements Serializable {
    private String username;
    private Integer userage;

    public User() {
    }

    public User(String username, Integer userage) {
        this.username = username;
        this.userage = userage;
    }

    public String getUsername() {
        return username;
    }

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

    public Integer getUserage() {
        return userage;
    }

    public void setUserage(Integer userage) {
        this.userage = userage;
    }
}

a:模型驱动
让Action实现ModerDriver接口,接口中返回一个实体对象
页面直接使用实体对象中的属性,要注意Action中的实体要new
jsp代码:

<form action="first.action" method="post">
    姓名:<input type="text" name="username"/><br/>
    年龄:<input type="text" name="userage"/><br/>
    <input type="submit" value="注册"/>
</form>

action代码

package web.action;

import com.opensymphony.xwork2.ModelDriven;
import pojo.User;


public class FirstAction implements ModelDriven {
    private User user=new User();

    public String execute()
    {
        System.out.println(user.getUsername());
        System.out.println(user.getUserage());
        return "success";
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Object getModel() {
        return user;
    }
}

action配置:

<action name="first" class="web.action.FirstAction">
            <result name="success">
                /success.jsp
            </result>
        </action>

页面展示信息代码

<h1><s:property value="username"/></h1>
    <h1><s:property value="userage"/></h1>

b:属性驱动(定义与页面一致名字的属性,加get与set
如果是一个对象,页面使用对象.属性)
页面代码:

<form action="second.action" method="post">
    姓名:<input type="text" name="user.username"/><br/>
    年龄:<input type="text" name="user.userage"/><br/>
    <input type="submit" value="注册"/>
</form>

action配置

<action name="second" class="web.action.SecondAction">
            <result name="success">
                /success.jsp
            </result>
        </action>

action代码

package web.action;

import com.opensymphony.xwork2.ModelDriven;
import pojo.User;

/**
 * @program: maven_test1
 * @description:
 * @author: ZhuWeiZhong
 * @create: 2019-03-03 17:31
 **/
public class SecondAction{
    private User user;

    public String execute()
    {
        System.out.println(user.getUsername());
        System.out.println(user.getUserage());
        return "success";
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

页面展示信息代码

<h1><s:property value="user.username"/></h1>
    <h1><s:property value="user.userage"/></h1>

三配置拦截路径
为了安全性考虑,建议将配置的路径设置为/*

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

然后通过常量来改变需要拦截的后缀
struts.action.extension=action,do,html
四ValueStack
值栈的作用:当一个请求发送到Action时
被过滤器拦截,创建一个值栈,将所有信息
都存在值栈中,然后到达Action,接下来将实例化
的Action压在栈顶跳转到页面

五动态Action
a:使用action!方法名的明文方式访问不同的方法
b:使用通配符来控制action的方法与跳转路径

六.WEB对象的获取方式(依赖)
request,session,response,application
a:非IOC
one:直接使用ActionContext的get获得map
two:使用包装后的ServletActionContext获得标准web对象
three:使用最底层的ValueStack获得map
b:IOC(Inverse Of Control)
one:实现requestAware等接口获得map对象
two:实现ServletRequestAware获得标准web对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值