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框架,并设置权限只能自己删除留言 立即下载

相关推荐

复旦微FMQL45T900平台RGMII网口调试实战:从PHY寄存器读取异常到链路建立

本文详细记录了复旦微FMQL45T900平台RGMII网口调试的全过程,重点解决了PHY寄存器读取异常问题。通过电压配置调整、时序优化和硬件信号完整性检查,最终成功建立网络链路。文章提供了实用的调试经验和解决方案,适合嵌入式开发人员参考。

weixin_29193359的博客 288

Struts核心功能

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

STM32F103用软件I2C读取IP2366电量数据,实测避坑指南(附完整源码)

本文详细介绍了如何使用STM32F103的软件I2C驱动读取IP2366电池管理芯片的电量数据,包括GPIO初始化、I2C时序实现、关键延时优化及常见问题解决方案。通过实测避坑指南和完整源码,帮助开发者快速实现稳定的电量数据读取,适用于嵌入式电池管理系统开发。

weixin_33725722的博客 514

struts开发实践[转]

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

870

TensorRT-LLM.V1.1.0rc0:在无 GitHub 访问权限的服务器上编译 TensorRT-LLM 的完整实践

1.NGC上的预构建发布容器进行部署,见《2.通过pip进行部署。3.从源头构建再部署。在实际开发中,我们常常面临这样的场景:本地笔记本为 Windows 系统,虽然可以访问 GitHub,但受限于硬件性能,编译大型项目(如 TensorRT-LLM)耗时过长;而公司或实验室提供的 Linux 服务器性能强劲,适合编译任务,但却因网络策略限制无法连接外网,尤其是无法访问 GitHub。。

xinvictory的专栏 1203

解决UE5像素流三大痛点:鼠标锁定/双光标/自动播放(附app.js魔改指南)

本文针对UE5像素流服务在实际应用中常见的鼠标锁定、双光标和自动播放三大交互痛点,提供了深入的技术分析和解决方案。通过详细解析app.js源码,指导开发者如何修改控制方案、修复光标显示以及实现静音自动播放,旨在提升Pixel Streaming应用的用户体验与专业度。

weixin_28025327的博客 382

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

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

XHW0901的博客 876

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

本文详细介绍了基于YOLOv5/YOLOv6/YOLOv7/YOLOv8深度学习模型的远距离停车位检测系统的完整实现方案。该系统能够准确识别200米范围内的停车位状态,为智能停车场管理系统、自动驾驶车辆提供关键的视觉感知能力。文章涵盖算法原理、数据集构建、模型训练、系统实现及优化策略,并提供完整的代码实现和UI界面设计。关键词:YOLO系列,深度学习,停车位检测,计算机视觉,智能交通系统pythonimport cv2import os"""创建数据存储目录""""""定时采集图像"""

YOLO 185

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

【零基础学习CAPL】——CAN报文的发送(CRC——ChecSum值)

本章主要介绍带有CRC值的报文发送一般报文可使用CANoe的IG模块直接发送,但带有CRC值的报文就只能编写脚本进行发送,以下详细讲解在配合Panel面板情况下,如何进行带有循环冗余码的报文进行报文的发送。

LOVE135149的博客 1913

面向精准医疗的多模态影像融合:实现前列腺MRI与大病理切片的三维配准与空间重建研究

亲爱的同学,当你能完整实现“前列腺MRI与大病理组织学图像的3D配准及体素重建”,你会发现医学影像交叉领域的毕设课题充满挑战与乐趣。我们将从临床需求出发,拆解3D配准与体素重建的核心技术,带你从原理到代码实现完整流程,让你的毕设不仅能顺利完成,更能体现临床应用价值。,让MRI和病理图像在同一空间对齐,能实现“术前影像-术后病理”的精准关联,为前列腺癌的精准诊疗、预后评估提供关键依据——这一课题既有技术挑战性,又有临床意义,是毕设的优质选择。(如NCC、Dice、配准时间),用数据证明方法的优越性。

m0_71589036的博客 4717

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

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

小鼠标的博客 1106

轴承故障诊断领域的论文到底有多水

这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。

weixin_50642818的博客 3052

Struts2学习总结

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

Marmara 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

常用框架学习(一)——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万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Struts2:Struts2常用标签总结

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

王小二(海阔天空) 1008

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、付费专栏及课程。

余额充值