Struts2框架自学之路——Action获取表单数据的方式以及表单数据的封装

2023-05-16

目录

  • 目录
  • Action获取表单数据的方式
    • 通过ActionContext类获取
    • 使用ServletActionContext类获取
    • 通过特定接口访问
    • 在Action中操作域对象
  • Action中原始方式封装表单数据
  • Struts2中表单数据的封装
    • 属性封装
    • 模型驱动封装重点
    • 表达式封装
    • 比较表达式封装和模型驱动封装
  • Struts2封装数据到集合中
    • 封装数据到List集合
    • 封装数据到Map集合

Action获取表单数据的方式

  在使用servlet处理请求的过程中,可以通过request对象获得表单提交过来的数据。采用struts2后将采用Action处理请求,而Action类中并没有request对象,所以不能直接使用request对象获取表单提交的数据。以下将讲解如何在Action中获取表单提交的数据。
  Action获取表单提交的数据主要有三种方式:
(1)使用ActionContext类
(2)使用ServletActionContext类
(3)使用接口注入方式

通过ActionContext类获取

  在Struts2中,提供了ActionContext类来访问Servlet API,ActionContext是Action执行的上下文对象,在ActionContext中保存了Action执行所需要的所有对象,包括parameters、request、session、application等。在主要讲解ActionContext中的一个方法:getParameters(),它用来返回一个包含所有HttpServletRequest参数信息的Map集合。
案例:
  form1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>ActionContext接收表单数据</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/form1.action" method="post">
    用户名:<input type="text" name="username"/><br/>
    密 码:<input type="password" name="password"/><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

  Form1Action.java

package com.wm103.form;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Map;
import java.util.Set;

public class Form1Action extends ActionSupport {
    @Override
    public String execute() throws Exception {
        // 1. 获取ActionContext对象
        ActionContext context = ActionContext.getContext();
        // 2. 获取表单数据,其中Map集合中的key是表单name的属性值,value是对应表单输入项的值
        Map<String, Object> parameters = context.getParameters();
        Set<String> keys = parameters.keySet();
        for (String key: keys) {
            // 这里是数组形式的原因是一个表单name属性值可以对应多个value值,如复选框提交数据
            Object[] obj = (Object[]) parameters.get(key);
            System.out.println(key + ": " + Arrays.toString(obj));
        }
        return NONE;
    }
}

  struts.xml中的配置:

<package name="demo2" extends="struts-default" namespace="/">
        <action name="form1" class="com.wm103.form.Form1Action"></action>
</package>

使用ServletActionContext类获取

  为了直接访问Servlet API,Struts2框架还提供了ServletActionContext类,该类包含了几个常用的静态方法,具体如下:
static HttpServletRequest getRequest() 获取Web应用的HttpServletRequest对象;
static HttpServletResponse getResponse() 获取Web应用的HttpServletResponse对象;
static ServletContext getServletContext() 获取Web应用的ServletContext对象;
static PageContext getPageContext() 获取Web应用的PageContext对象。
  这里为获取表单数据,调用ServletActionContext中的静态方法getRequest获取request对象。如:
  Form2Action.java

package com.wm103.form;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;

public class Form2Action extends ActionSupport {
    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username + ": " + password);
        return NONE;
    }
}

通过特定接口访问

  (这种方式一般不使用。)
  为了在Action中直接访问Servlet API,Stuts2还提供了一系列接口,具体如下:

  • ServletRequestAware:实现该接口的Action可以直接访问Web应用的HttpServletRequest实例;
  • ServletResponseAware:实现该接口的Action可以直接访问Web应用的HttpServletResponse实例;
  • SessionAware:实现该接口的Action可以直接访问Web应用的HttpSession实例;
  • ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例。
      这里为获取表单数据,需要Action实现ServletRequestAction接口,如:
      Form3Action.java
package com.wm103.form;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;
import javax.servlet.http.HttpServletRequest;

public class Form3Action extends ActionSupport implements ServletRequestAware {
    private HttpServletRequest request;

    @Override
    public void setServletRequest(HttpServletRequest httpServletRequest) {
        this.request = httpServletRequest;
    }

    @Override
    public String execute() throws Exception {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username + ": " + password);
        return NONE;
    }
}

在Action中操作域对象

  在Servlet中有3个域对象,分别为 request、session和servletContext。(pageContext域对象[page域]是在JSP中的)。
  使用ServletActionContext操作域对象,如:
  DomainAction.java

package com.wm103.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class DomainAction extends ActionSupport {
    @Override
    public String execute() throws Exception {
        // 1. 获取request域对象
        HttpServletRequest request = ServletActionContext.getRequest();
        request.setAttribute("request", "requestValue");

        // 2. 获取session域对象
        HttpSession session = request.getSession();
        session.setAttribute("session", "sessionValue");

        // 3. 获取servletContext域对象
        ServletContext servletContext = ServletActionContext.getServletContext();
        servletContext.setAttribute("servletContext", "servletContextValue");

        return NONE;
    }
}

Action中原始方式封装表单数据

   通过ServletActionContext对象获取request对象,进而使用request对象获取表单数据,将数据到的数据封装到实体对象去。如:
   实体类 User.java

package com.wm103.entity;

/**
 * Created by DreamBoy on 2017/5/26.
 */
public class User {
    private String username;
    private String password;

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

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

  Form4Action.java

package com.wm103.form;

import com.opensymphony.xwork2.ActionSupport;
import com.wm103.entity.User;
import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;

/**
 * Created by DreamBoy on 2017/5/26.
 */
public class Form4Action extends ActionSupport {
    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        System.out.println(user);
        return NONE;
    }
}

Struts2中表单数据的封装

  在实际开发中,我们需要在Action获取到表单数据,并对表单数据进行封装,封装到一个JavaBean中,然后将JavaBean传递给业务层。这些封装的操作Struts2框架提供了实现方式。如下。

属性封装

  在Struts2中可以直接在Action中定义各种Java基本数据类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递。
  实现步骤如下:
(1)在Action成员变量中定义变量,且变量名称与表单输入项的name属性值一致;
(2)在Action中生成与这些变量对应的set方法。
  案例如下:
  Data1Action.java

package com.wm103.data;

import com.opensymphony.xwork2.ActionSupport;

public class Data1Action extends ActionSupport {
    // 1. 定义变量,且变量的名称与表单输入项中的name属性值一致
    private String username;
    private String password;

    // 2. 生成变量对应的set方法(这里把getter和setter方法都生成了)
    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;
    }

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

  注:使用属性封装只能获取表单数据到Action属性中,并不能把数据直接封装到实体类对象里面。

模型驱动封装(重点)

  使用模型驱动封装的方式,我们可以直接把表单数据封装到实体类对象。
  模型驱动:通过实现ModelDriven接口来接收请求参数,Action类必须实现ModelDriven接口,并且要重写getModel()方法,这个方法返回的就是Action所使用的数据模型对象。
  实现步骤:
(1)让Action类实现接口ModelDriven;
(2)在Action类中创建实体类对象成员;
(3)实现接口中getModel方法,并返回上述提及的实体类对象。
  案例如下:
  Data2Action.java

package com.wm103.data;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.wm103.entity.User;

public class Data2Action extends ActionSupport implements ModelDriven<User> {
    // 创建实体类对象
    // 注意:要求表单输入项的name属性值与实体类属性名称一致,否则表单数据无法封装到实体对象的属性中去。
    private User user = new User();
    @Override
    public User getModel() {
        return user;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(this.user.getUsername() + ": " + this.user.getPassword());
        return NONE;
    }
}

使用模型驱动和属性封装时需要注意的问题
  在一个Action中,获取表单数据可以使用属性封装,也可以使用模型驱动封装,但是不能同时使用这两种方式获取同一个表单数据。如果同时使用,那么将执行模型驱动封装数据。


表达式封装

  使用表达式封装也可以把表单数据封装到实体类对象中去。表达式封装也可以归类于属性封装。
  实现步骤:
(1)在Action中声明实体类对象;
(2)在Action中为该实体类对象生成实体类变量的set和get方法;
(3)在表单中提交项的name属性值中写表达式形式,表达式的内容为 实体类对象的名称.实体类对象的属性名
  案例如下:
  Data3Action.java

package com.wm103.data;

import com.opensymphony.xwork2.ActionSupport;
import com.wm103.entity.User;

public class Data3Action extends ActionSupport {
    // 1. 声明实体类对象
    private User user;
    // 2. 生成实体类变量的set和get方法
    public User getUser() {
        return user;
    }

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

    @Override
    public String execute() throws Exception {
        System.out.println(this.user);
        return NONE;
    }
}

  在struts.xml中Action的配置:

<package name="demo2" extends="struts-default" namespace="/">
    <action name="data3" class="com.wm103.data.Data3Action"></action>
</package>

  测试页面 data3.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>表达式封装</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/data3.action" method="post">
    用户名:<input type="text" name="user.username"/><br/>
    密 码:<input type="password" name="user.password"/><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

比较表达式封装和模型驱动封装

  • 相同点:使用表达式封装和模型驱动封装都可以把数据封装到实体类对象中。
  • 不同点:
    • 使用模型驱动只能把数据封装到一个实体类对象中。在一个Action中不能使用模型驱动把数据封装到不同的实体类对象里面。
    • 使用表达式封装可以把数据封装到不同的实体类对象中。

Struts2封装数据到集合中

封装数据到List集合

  将表单提交的数据存储到List集合中,实现步骤如下(类似表达式封装):
(1)在Action中声明List集合对象;
(2)在该Action中生成List对象的get和set方法;
(3)在表单的提交项name属性中填写表达式,表达式的格式为 List集合对象的名称[下标].List集合中存储的对象的属性名称
  案例如下:
  ListAction.java

package com.wm103.data;

import com.opensymphony.xwork2.ActionSupport;
import com.wm103.entity.User;
import java.util.List;

public class ListAction extends ActionSupport {
    private List<User> list;

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(list);
        return NONE;
    }
}

  在struts.xml中Action的配置:

<package name="demo2" extends="struts-default" namespace="/">
    <action name="list" class="com.wm103.data.ListAction"></action>
</package>

  list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>封装数据到List集合</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/list.action" method="post">
    用户名1:<input type="text" name="list[0].username"/><br/>
    密 码1:<input type="password" name="list[0].password"/><br/>
    <br/><br/>
    用户名2:<input type="text" name="list[1].username"/><br/>
    密 码2:<input type="password" name="list[1].password"/><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

封装数据到Map集合

  将表单提交的数据存储到Map集合中,实现步骤如下(类似表达式封装):
(1)在Action中声明Map集合对象;
(2)在该Action中生成Map对象的get和set方法;
(3)在表单的提交项name属性中填写表达式,表达式的格式为 Map集合对象的名称['自定义键值对的key值'].Map集合中存储的对象的属性名称
  案例如下:
  MapAction.java

package com.wm103.data;

import com.opensymphony.xwork2.ActionSupport;
import com.wm103.entity.User;

import java.util.Map;

public class MapAction extends ActionSupport {
    private Map<String, User> map;

    public Map<String, User> getMap() {
        return map;
    }

    public void setMap(Map<String, User> map) {
        this.map = map;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(map);
        return NONE;
    }
}

  在struts.xml中Action的配置:

<package name="demo2" extends="struts-default" namespace="/">
    <action name="map" class="com.wm103.data.MapAction"></action>
</package>

  map.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>封装数据到Map集合</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/map.action" method="post">
    用户名1:<input type="text" name="map['key01'].username"/><br/>
    密 码1:<input type="password" name="map['key01'].password"/><br/>
    <br/><br/>
    用户名2:<input type="text" name="map['key02'].username"/><br/>
    密 码2:<input type="password" name="map['key02'].password"/><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2框架自学之路——Action获取表单数据的方式以及表单数据的封装 的相关文章

  • Struts2 在 select 标签中使用 Map

    您可以轻松地在struts2 select标签中使用List 但是有没有办法在标签中使用Map 如果可以请提供示例代码 thanx 在我的动作课上 public class MyAction extends ActionSupport pr
  • Struts2 + 完整 Hibernate 插件 --> 会话已关闭?

    与这个问题相关 答案并没有真正切中要点 Hibernate with Struts2 有用的 Hibernate 插件或其他关闭会话的方法 https stackoverflow com questions 5901137 hiberate
  • 如何将欢迎页面设置为 struts 操作?

    我有一个基于 struts 的 web 应用程序 我希望默认的 欢迎 页面成为一个操作 我发现的唯一解决方案似乎是使欢迎页面成为包含操作重定向的 JSP 例如 在web xml
  • 使用 Struts 2.2.x 的简单 JSON 示例?

    我在获取 JSON 结果时遇到问题支柱2 2 1 1 http struts apache org 2 2 1 1 index html 有没有人有一个简单的工作示例 可以使用以下命令将 JSON 结果返回到 JSP支柱2 2 1 1并准备
  • 通过 jdbc 执行存储过程时获取网关超时

    我正在使用 struts2 框架 它基本上是这样的 ActionClass execute call function in business class which returns an object and store this obj
  • Struts 2 S2-016 漏洞缓解直至升级

    最近 Struts 修复了一个允许攻击者执行远程代码的漏洞 显然 不修补这个问题就像用潮流欢迎黑帽子一样 http struts apache org release 2 3 x docs s2 016 html http struts a
  • Struts 2 - 使用 CKEditor 拦截上传的图像文件

    我有一个CKEditor在网站的不同页面上 所以我将上传内容设置为true以及让它工作的所有配置内容 并且图像上传工作得很好 Send it to the Server 标签 但从这里我想拦截或互动upload函数能够将图像上传到文件夹中
  • 如何使用参数重定向

  • 文件保存在文件系统中 VS 保存在数据库中

    我正在设计一个 servlet 或 Struts2 中的操作 用于文件 图像 文档等 下载 但我想知道哪种更好的方法可以将文件保留在文件系统和数据库中 只需保留文件的路径或将文件保留在数据库中 如 BLOB 我知道当我查询数据库时 哪里的
  • android 从图库中选择图像

    我想从图库创建一个图片选择器 我使用代码 intent new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL CONTENT URI
  • 为什么这个动作不抽象? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我很难理解为什么一个类中的一个操作是抽象的 而另一个类中的操作不是 源代码1 编译时出错 https gyazo com cd3c
  • 如何在 Struts 2 中访问 OGNL 跟踪评估?

    有人告诉我要优化网络应用程序 为此 我使用JProfiler https www ej technologies com products jprofiler overview html 我注意到很大一部分响应时间都花在了表示层上 特别是当
  • 在 Struts 2 中使用单个文件标签上传多个文件

    我想使用单个 Struts 2 文件标签上传多个文件 就像在 Gmail 中一样 我们使用 CTRL 键来选择多个文件来附加多个文件 我知道如何上传多个文件 但我想使用单个文件标签 我在一个小画廊应用程序中上传多个文件 如果您的操作已设置为
  • 在Struts2中输入日期

    如何更改struts 2中java util Date对象的格式 我测试过 Struts 2接受m d yy 可以改变格式吗 以及如何更改默认消息 字段日期的字段值无效 struts2中的日期标签只能在输出中使用 您可以将格式传递给s da
  • Rails 从视图中调用操作

    希望这里有一个简单的问题 但我似乎无法找到答案 刚刚开始使用 RoR 但之前来自 ASP MVC 我在渲染部分视图时遇到问题 其局部变量不一定与主视图的变量相关联 例如 对于一个博客 我试图渲染一个链接到存档的侧边栏 def sidebar
  • Github 操作测试之前是否进行了包含特定单词的提交

    我需要确保使用 github 操作进行测试 如果之前已进行包含该单词的提交build 如果提交不包含单词build那么不应运行 github 操作的测试 你能给我一些建议吗 Test name Testing on push branche
  • 将属性标记中的值提交到操作表单

    The JSP
  • 安装后如何执行Wix自定义操作?

    我正在使用 Wix3 将 WCF 服务安装到 IIS 安装完成后如何使用我的自定义操作 c 函数 即我需要打开已安装的 web config 文件并将主机名替换为真实的主机名 有任何想法吗 您可以安排在之后安装完成 http wix sou
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 如何在 Struts 2 OGNL 中将参数传递给方法调用

    我想使用属性作为对象方法的参数

随机推荐

  • Tomcat相关知识点及其应用

    目录 目录将Web应用打包成warTomcat体系架构Tomcat配置https连接器Tomcat服务器的管理平台 将Web应用打包成war 在Web应用目录下执行命令 xff1a jar cvf xxx span class hljs p
  • Servlet开发须知知识点

    目录 目录Web项目目录结构Servlet的调用过程Servlet的运行过程Servlet接口实现类Servlet的URL映射Servlet线程安全 Web项目目录结构 举例 xff0c 在Intellij IDEA中如下 xff1a 其中
  • Servlet中的response对象

    目录 目录前言简介向客户端输出数据 response对象的getOutputStream方法response对象的getWriter方法 实现文件下载生成图片验证码实现浏览器定时刷新控制浏览器缓存实现请求重定向 前言 这里讲述的是Servl
  • Servlet中的request对象

    目录 目录简介request的常用方法request接收中文数据乱码问题request对象实现请求转发使用请求转发的注意事项RequestDispatcher的页面包含方法includeWeb工程中各类URL地址的写法防盗链 简介 Http
  • wps和搜狗输入法archlinux的解决方案文章

    archlinuxcn 源里安装yay wps3部分组成 yay S wps office cn 主程序英文界面 yay S wps office mui zh cn 中文皮肤 xff0c 变成中文界面 yay S ttf wps font
  • Servlet中不可不知的Cookie技术

    目录 目录介绍Servlet中的CookieCookie重要知识点通过Cookie技术显示用户上次访问时间使用Cookie技术实现记录用户浏览过的商品 显示商品列表和浏览过的商品查看商品详情 xff08 使用Cookie记录浏览信息 xff
  • Servlet中不可不知的Session技术

    目录 目录介绍Session和Cookie的主要区别Session的创建Session的销毁Session的实现原理解决浏览器关闭后就立即丢失Session ID的问题浏览器禁用Cookie后如何使用Session技术 xff1f Sess
  • JSP知识随手记

    目录 目录介绍JSP运行原理JSP最佳实践JSP指令 page指令include指令taglib指令 JSP九大内置对象 out隐式对象pageContext隐式对象 JSP标签映射JSP知识点JSP与JavaBean 关于JavaBean
  • FileZilla连接Linux服务器(Ubuntu)

    目录 目录前言FileZilla使用ubuntu用户密钥的形式连接FileZilla使用root用户密码的形式连接参考 前言 这里使用的是Ubuntu服务器 xff0c 如果是Linux系统的服务器出现这样的问题 xff0c 可能解决方法也
  • JSP中的自定义标签

    目录 目录简介入门案例自定义标签功能扩展传统自定义标签的运行原理传统自定义标签的使用 控制JSP页面部分内容执行控制整个JSP页面是否执行控制标签体执行重复执行用标签修改JSP页面内容 简单标签的运行原理简单标签的使用 控制JSP页面部分内
  • JSP中使用简单标签自定义标签

    目录 目录简介使用标签控制页面逻辑的案例 开发防盗链标签开发cif标签开发cifcelse标签开发cforEach标签使用简单标签实现html转移标签 打包标签库 简介 让标签处理器类继承于SimpleTagSupport类实现自定义标签功
  • Struts2框架自学之路——轻松入门

    目录 目录简介Struts2中的Action Action类的配置webxml中Struts2的过滤器 Struts2的核心配置文件 标签package 标签package的属性 标签action 标签action的属性 标签result
  • 重拾Hibernate框架——入门

    目录 目录Hibernate入门 第一个Hibernate程序 实现数据库操作 Hibernate配置文件详解 Hibernate映射配置文件Hibernate核心配置文件 Hibernate的核心API ConfigurationSess
  • 重拾Hibernate框架——实体类、主键生成策略、session绑定本地线程

    目录 目录实体类持久化类的编写规则Hibernate主键生成策略实体类操作 案例准备对实体类CRUD操作 添加操作查询操作修改操作删除操作saveOrUpdate方法 实体类对象状态Hibernate一级缓存Hibernate事务操作 规范
  • 重拾Hibernate框架——一对多关联

    目录 目录前言一对多映射配置 创建实体类让两个实体类之间相互表示配置映射关系配置核心配置文件Hibernate工具类 一对多关联操作 级联保存级联删除修改操作 inverse属性 前言 这里将以公司和员工为例 xff0c 其中公司与员工是一
  • Visual C++2010学习版详细安装教程

    获取该资源花了本人很长时间 xff0c 为了你们需要VC2010系列的编程软件更容易 xff0c 本人把我找到VC2010系列安装包放在了我的百度网盘分享 xff0c 该资源来之不易 xff0c 请广大朋友们好好珍惜 xff01 由于我换了
  • 重拾Hibernate框架——多对多关联

    目录 目录前言多对多映射配置 创建实体类让两个实体类之间相互表示配置映射关系配置核心配置文件Hibernate工具类 多对多关联操作 级联保存级联删除一般不使用 维护第三张表关系 前言 这里将以用户和角色为例 xff0c 其中用户与角色是多
  • 重拾Hibernate框架——查询操作

    目录 目录前言OID查询对象导航查询HQL查询 查询所有条件查询排序查询分页查询投影查询聚合函数的使用 QBC查询 查询所有条件查询 Restrictions类的常用方法 排序查询 Order类的常用方法 分页查询统计查询 Projecti
  • Struts2框架自学之路——结果页面的配置

    目录 目录Struts2中结果页面的配置 全局结果页面局部结果页面result标签的type属性 Struts2中结果页面的配置 在struts xml核心配置文件中 xff0c 我们可以配置Action类的URL访问路径 xff0c 以及
  • Struts2框架自学之路——Action获取表单数据的方式以及表单数据的封装

    目录 目录Action获取表单数据的方式 通过ActionContext类获取使用ServletActionContext类获取通过特定接口访问在Action中操作域对象 Action中原始方式封装表单数据Struts2中表单数据的封装 属