Struts2学习二(Struts2的常用功能)

Struts2框架核心Jar包清单与功能介绍 本文还有配套的精品资源,点击获取 简介:SSH(Spring、Struts2和Hibernate)是Java Web开发中常用的开源框架组合。本资源主要关注Struts2框架所需的基本jar包,这些包是构建企业级应用程序的核心。Struts2作为MVC框架,在应用中负责HTTP请求处理和业务逻辑管理。本文介绍了Struts2框架的核心jar包,包括struts2-core.... 阅读详情

1、Struts2常用功能

Struts2作为一个MVC应用程序的框架,能够解决web应用程序开发过程中的一些常见问题提供解决方案
1、获取表单内容,封装成对象(封装请求参数)
2、类型转换(8种基本数据类型,Date,数组,List,Map)
2、根据请求的参数转发给适当的控制器
3、校验(手动校验,xml校验)
4、国际化(i18n)
5、拦截器

2、封装请求参数

Struts2通过ModelDriven实现请求参数的封装
步骤如下

  1. 实现接口:ModelDriven
  2. 编写方法:public User getModel() { return user ; }
  3. 提供成员变量:private User user = new User();

ModelDriven 机制
Struts2提供提供使用领域的对象方式,就是ModelDriven接口
通过ModelDriven接口可以直接操作应用程序中的领域对象,允许在web层和业务层使用相同的对象。

public  Object  getModel(){ 
returnnull; 
} 

该方法返回一个用于接收用户输入数据的对象模型

这里写图片描述
示例代码
1、JavaBean类User

public class User {
    private String userName;
    private String upserPwd;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUpserPwd() {
        return upserPwd;
    }

    public void setUpserPwd(String upserPwd) {
        this.upserPwd = upserPwd;
    }

}

2、UserAction类

public class UserAction extends ActionSupport implements ModelDriven<User>{

    private User user =new User();

    public User getModel() {
        // TODO Auto-generated method stub
        return user;
    }
    public String add(){
        return SUCCESS;
    }

}

3、web.xml文件中添加filter

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

4、form.jsp和success.jsp

<body>
    <form action="${pageContext.request.contextPath}/userAction" method="post">
        用户名<input type="text" name="userName"> <br/>
        密码<input type="text"name="upserPwd"><br/>
         <input type="submit" value="提交">
    </form>
</body>

success.jsp

<body>
    action success. <br>
  </body>

5、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>
    <constant name="struts.devMode" value="true"></constant>
    <package name="demo" namespace="/" extends="struts-default">
        <action name="userAction" class="com.example.demo.UserAction"
    method="add">
            <result>/a/success.jsp</result>
        </action>
    </package>


</struts>

3、数据校验

在web开发中数据校验可以是JavaScript,也可以是struts校验。但是JavaScript不安全,面的是在浏览器端进行的校验,服务器端也必须对数据进行校验

struts校验方式
1、xml校验

2、注解校验

这里写图片描述
示例代码
流程
1、Customer类

public class Customer {
    private String username;
    private String password;
    private String repassword;
    private String email;
    private int age;
    private Date birthday;
    private String gender;
    private String cardid;

    public String getName() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

    public String getRepassword() {
        return repassword;
    }

    public void setRepassword(String repassword) {
        this.repassword = repassword;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getCardid() {
        return cardid;
    }

    public void setCardid(String cardid) {
        this.cardid = cardid;
    }

    @Override
    public String toString() {
        return "Customer [name=" + username + ", password=" + password
                + ", repassword=" + repassword + ", email=" + email + ", age="
                + age + ", birthday=" + birthday + ", gender=" + gender
                + ", cardid=" + cardid + "]";
    }

}

2、CustomerAction

public class CustomerAction extends ActionSupport implements
        ModelDriven<Customer> {

    private Customer customer = new Customer();


    public Customer getModel() {
        // TODO Auto-generated method stub
        return customer;
    }

    public String register(){
        System.out.println("customer----"+customer);
        return NONE;

    }
}

3、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>
    <constant name="struts.devMode" value="true"></constant>
    <package name="demo" namespace="/" extends="struts-default">
        <action name="customerAction_*" class="com.example.demo2.CustomerAction"
            method="{1}">
            <result name="input">/b/form.jsp</result>
        </action>
    </package>
</struts>

4、form.jsp表单

<body>

    <s:fielderror></s:fielderror>
    <h2>注册</h2>

    <form action="${pageContext.request.contextPath}/customerAction_register"
        method="post">             
        用户名<input type="text" name="username" value="1234" > <br /> 
        密码<input type="text" name="password" ><br /> 
        确认密码<input type="text"name="repassword"><br /> 
        邮箱<input type="text" name="email"><br /> 
        年龄<input type="text" name="age"><br /> 
        生日 <input type="text" name="birthday"><br /> 
        性别<input type="text"name="gender"><br /> 
        身份证<input type="text" name="cardid"><br />
        <input type="submit" value="提交">
    </form>
</body>
</html>

5、CustomerAction-customerAction_register-validation.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <!-- #1 用户名 -->
    <field name="username">
        <field-validator type="requiredstring">
            <message>用户名必填</message>
        </field-validator>
    </field>

    <!-- #2 密码-->
    <field name="password">
        <field-validator type="requiredstring">
            <message>密码必填</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">2</param>
            <param name="maxLength">12</param>
            <message>密码必须在${minLength}-${maxLength}字符之间</message>
        </field-validator>
    </field>

    <!-- #3 确认密码 -->
    <field name="repassword">
        <field-validator type="fieldexpression">
            <param name="expression"><![CDATA[password == repassword]]></param> 
            <message>密码 和 确认密码 不一致</message>
        </field-validator>
    </field>

    <!-- #4 邮箱 -->
    <field name="email">
        <field-validator type="email">
            <message>电子邮箱格式不正确。</message>
        </field-validator>
    </field>
    <!-- #5 年龄 -->
    <field name="age">
        <field-validator type="int">
            <param name="min">0</param>
            <param name="max">120</param>
            <message>年龄必须是${min}-${max}之间一个数</message>
        </field-validator>
    </field>
    <!-- #5 生日 -->
    <field name="birthday">
        <field-validator type="date">
            <param name="min">1980-01-01</param>
            <param name="max">2000-12-31</param>
            <message>生日必须是${min}-${max}之间</message>
        </field-validator>
    </field>

    <!-- #6 性别 -->
    <field name="gender">
        <!-- 如果没有选择,服务器获得性别为null -->
        <field-validator type="required">
            <message>性别必须选择</message>
        </field-validator>
    </field>
    <!-- #7 身份证 -->
    <field name="cardid">
        <field-validator type="regex">
            <param name="regexExpression">[\d]{6}-[\d]{8}-[\d]{4}</param>
            <message>身份证必须是一下格式</message>
        </field-validator>
    </field>

</validators>
利用Struts2框架实现的登录留言评论效果(idea平台) 利用Struts2框架实现的登陆留言评论的效果,有修改,删除留言等功能,前端为Bootstrap框架,并设置权限只能自己删除留言 立即下载

相关推荐

图腾柱无桥PFC控制逻辑解析:从双闭环到电压前馈的设计演进

本文深入解析图腾柱无桥PFC控制逻辑的设计演进,从经典双闭环控制到电压前馈技术的实现。通过分析功率波动问题和动态响应慢的症结,提出引入电压前馈的解决方案,并详细探讨数字实现中的关键注意事项。文章还涵盖控制框图的构建、稳定性分析方法及实际应用中的调参技巧,为开关电源设计提供实用指导。

weixin_29268267的博客 571

Struts核心功能

浙江大学 范宏杰(Java学生) 1093

IEC61850客户端连接实战:CMS vs MMS协议抓包对比与性能初探(基于YX-PIS协议栈)

本文深入探讨了IEC61850客户端连接中CMS与MMS协议的抓包对比与性能优化。通过Wireshark抓包分析、协议栈配置实战和性能基准测试,揭示了两种协议在连接建立、数据交互和性能调优方面的关键差异,为智能电网自动化系统的协议选择提供了实用指南。

weixin_29209805的博客 215

struts开发实践[转]

一、struts使用小贴士(mainly from《struts in action》)1. 在actionForm中使用array以匹配重复的变量。例如在使用multibox时,相对应的可以在form中定义array。2.使用显示collection的记录总数。 eg:。如果resultList有两条记录,则显示2。3. 显示循环序号标记:    4.使用检查对象是否存在。使用检查属性是否存

870

拆解爆火AI图文日报!用扣子(Coze)工作流,10分钟实现自动化新闻早报

当用户提供一则新闻内容时,仔细分析新闻中的关键信息。提取新闻事件的核心要点,包括事件主体、发生时间、地点、主要情节等。用简洁的语言对新闻进行总结,控制在[X]字以内(可根据实际需求设定字数限制)。若用户提供多条新闻,对比各新闻之间的异同点。从事件类型、影响范围、发展趋势等方面进行分析。综合总结多条新闻的整体情况,以有条理的方式呈现给用户。

一身都是月 2426

【RL in VLA】VLA中的强化学习

本文提出了一种名为 Reinforcement Learning Distilled Generalist(RLDG) 的方法,通过强化学习生成高质量训练数据来微调机器人基础模型。通过在多个精确操作任务上的实验,我们证明了 RLDG 在成功率和泛化能力上显著优于使用人类演示的传统微调方法。RLDG 不仅减少了对人类演示数据的依赖,还展示了在复杂多阶段任务中的灵活性和有效性。

三木今天学习了嘛の博客 2257

struts2框架 - 文件的上传与下载

文件上传、文件下载 (1)写表单页面(2)写程序(3)写配置文件。 表单页面属性(1)enctype属性:设置表单数据的形式 1. 默认值"application/x-www-form-urlencoded"表示表单提交的都是String类型数据,对方可以通过request.getParameter(xxx)来接收 2. 如果数据为特殊形式,则需要将enctype设置为 multipart/form-data文件下载表单页面将所有可以下载的文件做成超链接,供用户点击下载...

XHW0901的博客 876

Python爬虫实战:全自动采集银行理财产品收益率数据

本文通过Playwright动态爬虫技术,成功实现了对银行理财产品收益率数据的实时采集,并通过 Pandas 数据清洗、SQLite 存储、调度自动化等模块,构建了一个可扩展的银行理财数据抓取系统。理财非儿戏,数据做决策。掌握银行收益信息是我们迈向理性投资的第一步。希望这套工具对你有所帮助!

2201_76125261的博客 1155

struts2讲解

Struts2部分 1.JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层)、业务逻辑层、数据持久层。【其中WEB层会使用前端控制器模式】 MVC是一种思想,是一种模式,将软件分为Model模型、View视图、Controller控制器。【JavaEE开发更强调三层结构,web层开发更注重MVC】 Struts2就是web层开发框架,符合MVC模式;struts1、webwork、jsf、SpringMVC都是MVC...

woaini886353的博客 1万+

Qwen大模型参数解析

Qwen系列模型的参数主要分为(决定模型结构)和(控制生成行为)两类。由于该系列已迭代多个版本,参数设计也在不断演进,我会结合最新版本为你进行分层梳理。

yeyiboy的博客 165

【华为OD机试真题】282、求满足条件的最长子串的长度 | 机试真题+思路参考+代码分析 (C++、Java、Py、C语言、JS)

题目描述 >给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求: >  1、只包含1个字母(a~ z,A~Z), 其余必须是数字; 2、字母可以在子 串中的任意位置; >  如果找不到满足要求的子串,如全是字母或全是数字,则返回-1

KJ.JK 1万+

【框架学习】Struts2(三)功能模块

1.访问servlet APIservlet 在传统jsp+servlet+javabean中扮演者M(控制的作用)Struts2中提供了三种方式去访问Servlet API 通过ActionContext 获取request和response对象(Map形式存储对象) 实现 ….Aware接口 通过ServlerActionContext获取 2.Action搜索顺序 举个例子: 访问:h

小鼠标的博客 1106

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 267

Struts2学习总结

一、概述 1、是什么? Struts2轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。低侵入性,与业务代码的耦合度很低。Struts2实现了MVC,并提供了一系列API,采用模式化方式简化业务开发过程。 1、运行在web层.负责处理请求的. 2、struts2已经帮我们封装了很多web中常用的功能(拦截器) 3、struts2 与 ...

Marmara 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

常用框架学习(一)——Struts2

1.1  Struts2概述1.1.1  什么是Struts2Struts2是由Apache社区的Struts1和Opensysmphony的Webwork整合而来,Struts负责对http请求的处理,Webwork负责业务逻辑处理。1.1.2 运行环境搭建1.导入13个jar包(在Struts2自带的demo中可以找到最少所需包)2.需要在web.xml文件中配置StrutsPrepareAn...

不忘初心的博客 3万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Struts2:Struts2常用标签总结

Struts2:Struts2常用标签总结 一. Struts2的常用逻辑标签 1.1 property标签 功能说明:获取对象的属性值,目标对象默认位于ValueStack栈顶。 示例如下: &lt;s:property value="user.userName"/&gt; 标签属性: 名称 必选 类型 说明 value no Object 对象的属性名称,默认直接输出 Va...

王小二(海阔天空) 1008

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Struts2实现登陆功能Demo

最近在学习SSH框架,通过用struts实现一个简单的登陆功能,来学习struts相关知识,着重了解了struts的配置。

王二的专栏 8055

Struts2学习笔记二(Struts2的使用)

注:学习笔记,可能有些地方会有错误,仅供参考 Struts2的基本使用 由于我们使用Struts2代替了表现层的Servlet,同样我们也需要学习如果通过Struts2获取页面传来的数据,或者如何向页面传数据,同时还要学习如何转发或者重定向到一个逻辑页面(jsp或者action类)。 Struts2的域对象的使用 在Servlet时,我们是通过域对象向页面传数据,这些域对象都是Servl...

水中无名鱼的博客 225

Struts2 入门学习总结二

一、Struts2的配置文件 Struts2中的6个配置文件: default.properties struts-default.xml struts-plugin.xml struts.xml struts.properties web.xml 配置文件的加载顺序和上图一致。当多个配置文件中,有相同的参数,后加载的值会覆盖先加载的值。 default.properties...

vel970912的博客 509

ssh之struts2篇(二)拦截器&常用标签

主要是拦截器的基础知识,掌握配置和使用方法,学会如何配置和使用自定义拦截器。 运用struts2标签库的标签开发出功能强大的视图页面。

阿U的博客 1261

IntelliJ IDEA学习Struts2(二)—— Struts2核心配置文件struts.xml中的常用标签

IntelliJ IDEA学习Struts2(二)—— struts.xml中的常用标签 struts.xml固定位于src下,dtd约束被默认创建,主要标签有三个package,action,result。 1.package标签 类似于代码包,区别不同的action,要配置action必须首先写package标签,在package里面才能配置action (1)name属性 name属性值与...

qq_43374104的博客 381

Struts2 常用配置速查表

本文总结了Struts2框架的核心配置与常用功能速查表,包含:1)struts.xml配置详解,如package、action、result等核心标签的属性和用法;2)OGNL表达式语法,包括对象栈取值、ContextMap取值及集合操作;3)常用UI标签如property、iterator、form等的使用示例;4)异常处理配置方式(局部/全局)及错误页面取值;5)常用常量配置,如请求扩展名、主题样式等。全文采用表格形式清晰呈现各类配置项,方便开发者快速查阅关键语法与配置要点。

qq_45438032的博客 644

Struts2与Struts1的对比学习(二)

概述下图是对两者区别的一个整理: 我们来详细的介绍一下各个方面的区别Action实现类Struts1要求Action类继承一个抽象基类;Struts1的一个具体问题是使用抽象类编程而不是接口。Struts2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实

区块链领域填坑的java程序猿 1434

Struts 1.2.2 新功能体验(二)

Struts 1.2.2 新功能体验(二) 日期: 2004-09-07作者: 2002PP从1.2.2开始对DispatchAction中实现isCancelled的功能进行了简化.在DispatchAction的子类中只需override DispatchAction的cancelled方法即可,而不用在1.1中要通过override execute方法来实现.  至于实现的原理可参见下面

1576

STRUTS2学习(二)——自定义Action及匹配配置

STRUTS2学习(二)——自定义Action及匹配配置 1、摘要 从上面的学习中我们可以看出,struts.xml这个配置文件指明了HttpRequest、namespace、action和result四者之间的映射关系。框架通过读取struts.xml文件中的相关内容,形成对于客户端发送过来的HttpRequest的URL的解析规则,并使用这些规则将result作为HttpResponse

笨鸟很努力的博客 1991

Struts2常用标签

Struts2常用标签 1.常用标签用法介绍 Struts2标签可以分为UI标签,非UI标签和Ajax标签三大类: (1)UI标签:主要用于生成HTML页面元素,它又可分为表单标签(主要用于生成HTML中的表单)和非表单标签(主要包含一些常用功能标签,例如显示日期或下拉列表等)。 (2)非UI标签:主要用于数据逻辑输出和数据访问,他可以分为数据标签(主要用于数据的存储和处理)和控制标签(主要用于条...

Nicholas_GUB的博客 1320
上一篇: Struts2学习一(Struts2介绍)
下一篇: struts2学习三(OGNL和ValueStack值栈)
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值