struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式

1、属性驱动

a\  一般的set

 1 public class UserAction extends ActionSupport {
 2
 3 private String username;
 4 private String password;
 5
 6 public void setUsername(String username) {
 7 this.username = username;
 8 }
 9
10 public void setPassword(String password) {
11 this.password = password;
12 }
13
14 @Override
15 public String execute() throws Exception {
16 System.out.println("username:" + username + "----password:" + password);
17 return NONE;
18 }
19 }

set 方式

页面层:

1 <form action="${pageContext.request.contextPath}/user.action" method="post">
2             用户名
3             <input type="text" name="username" />
4             <br />
5             密码
6             <input type="password" name="password" />
7             <br />
8             <input type="submit" value="提交" />
9         </form>

jsp 页面

b\ognl 方式实现

1     <form action="${pageContext.request.contextPath}/user2.action" method="post">
2             用户名
3             <input type="text" name="user.username" />
4             <br />
5             密码
6             <input type="password" name="user.password" />
7             <br />
8             <input type="submit" value="提交" />
9         </form>

jsp页面

action端:

 1 public class User2Action extends ActionSupport {
 2
 3     private User user;
 4
 5     public User getUser() {
 6         return user;
 7     }
 8
 9     public void setUser(User user) {
10         this.user = user;
11     }
12
13     @Override
14     public String execute() throws Exception {
15         System.out.println(user.toString());
16         return NONE;
17     }
18 }

action 端

Struts2的参数的封装分成两类:

* 属性驱动:

* 模型驱动:

属性驱动:

一、提供属性的set方法,封装参数:(属性驱动)

页面:

用户名:<input type="text" name="username"><br/>

Action:

public class ParamAction1 extends ActionSupport{

private String username;

public void setUsername(String username) {

this.username = username;

}

}

问题一:在Action中提供了全局变量,Action是线程安全的还是不安全?

* 提供了全局变量,如果是线程不安全的,全局变量就会有线程安全问题存在.测试提供一个构造方法.发现每次请求都会创建一个Action的实例.说明Action是多实例.不会有线程安全问题.

问题二:参数封装是由谁完成的?

* <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

这种方式不是特别好!封装的是单个属性,需要自己收到封装到一个JavaBean对象中.传递给业务层.

二、通过OGNL表达式的写法封装参数:(属性驱动)

页面:

用户名:<input type="text" name="user.username"><br/>

Action:

public class ParamAction2 extends ActionSupport{

private User user;

public void setUser(User user) {

this.user = user;

}

public User getUser() {

    return user;

}

}

***** OGNL表达式封装,后台Action中提供一个对象的set和get方法.必须提供get方法.get获得到框架创建的对象.(将封装封装到不同的对象中.)

时间: 2024-12-21 20:12:47

struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式的相关文章

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Struts2(八)访问Servlet API

一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等功能---application 1.2.传统的Servlet API类型 HttpServletRequest HttpSession ServletContext 1.3.Struts2中将传统的Servlet API类型被处理成Map类型 访问更方便 不依赖传统Servlet API 类型--

pandas,读取或存储DataFrames的数据到mysql中

dataFrames格式的数据是表格形式的,mysql数据库中的数据也是表格形式的,二者可以很方便的读取存储 安装依赖的包 pip install pandas pip install sqlalchemy pip install pymysql 使用方法  第一步:建立mysql数据库的连接 connect_info = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format("username", "password&qu

struts2中的jsp值传到后台action接收的三种方法

struts2中的Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="post" name="form1"> 用户名:<s:textfield name="username"/><br/> 密 码:<s:password name="password"/><br/&g

【Struts2学习笔记(2)】Action配置中的各项默认值和Action中result的各种转发类型

一.Action配置中的各项默认值 <span style="font-size:18px;"><package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction&quo

调查管理系统 -(6)自定义Struts2的拦截器&amp;自定义UserAware接口&amp;Action中模型赋值问题&amp;Hibernate懒加载问题

1.对于一些功能,如我的调查或新建调查等,只有用户登录后才能进行操作,因此必须对用户是否登录进行判断.当用户登录后才能使用相应的功能,如果没有登录则需为用户导航到登录页面让其进行登录.这个功能可以通过自定义Struts2的拦截器来完成. 2.当用户登录之后,由于是将用户的信息保存在session中的.这样当一些Action中需要用到当前登录的用户的信息时需要手动的从session中获取,不太方便,因此我们声明了一个UserAware接口(即用户关注,类似于Struts2中的SessionAwar

Struts2理解--动态方法和method属性及通配符_默认Action

众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Action中的任意方法. 想要禁止调用动态方法,则要在struts.xml中通过constant元素将属性strutsenableDynamicMethodInvocation设置为false,来禁止调用动态方法. <constant name="strutsenableDynamicMetho

Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 1 ActionContext context = ActionContext.getContext(); 2 ServletContext servletContext = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT); //抛空指针异常

Struts2的简单使用(四)action向页面传值

在这里我要说一下在action中怎么向页面传值~ 在action中依然可以像以前在servlet里面一样,使用request.session.application向页面传送值,除此之外,action里面还有俩个独有的传值方式:ValueStack  ActionContext 一,先来说说这俩个独有的传值方式~ 1.ValueStack的特点(值栈): 1.把一个对象放到vs里面之后,我们从这个vs中是拿不到这个对象的,但是我们可以直接拿到这个对象里面的属性以及属性值. 2.从vs中拿值的时候