主页:http://struts.apache.org/
在用户请求和模块化处理方面以及页面的展现这块,Struts2 发挥了强大的作用;
相对于传统的Jsp+Servlet 模式,Struts2 更适合企业级团队开发,方便系统的维护;

Struts2 HelloWorld

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

  

 Action 设置数据

第一种方式:属性驱动(FieldDriven)

A、基本数据类型属性

B、JavaBean 类型属性

第二种方式:模型驱动(ModelDriven)

  基本数据类型属性

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录</title>
</head>
<body> <form action="login" method="post">
用户名:<input type="text" name="userName" id="userName"/><br><br>
密码:<input type="password" name="password" id="password"/><br><br>
<input type="submit" value="登录" /><input type="reset" value="重置" />
</form> </body>
</html>

  

<struts>
<package name="welcomeToZiBo" extends="struts-default">
<action name="login" class="com.zhiqi.action.UserAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>

  

package com.zhiqi.action;

import com.opensymphony.xwork2.ActionSupport;
import com.zhiqi.model.User;
import com.zhiqi.service.UserService; public class UserAction extends ActionSupport { /**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService=new UserService();
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 execute() throws Exception {
System.out.println("开始");
User user=new User();
user.setUserName(userName);
user.setPassword(password); if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
} }

  

package com.zhiqi.service;

import com.zhiqi.model.User;

public class UserService {
public boolean login(User user){
if("web".equals(user.getUserName())&& "123".equals(user.getPassword())){
return true;
}else{
return false;
}
}
}

  JavaBean 类型属性

  

<form action="login" method="post">
用户名:<input type="text" name="user.userName" id="userName"/><br><br>
密码:<input type="password" name="user.password" id="password"/><br><br>
<input type="submit" value="登录" /><input type="reset" value="重置" />
</form>

  

<action name="login" class="com.zhiqi.action.UserAction2">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>

  

package com.zhiqi.action;

import com.opensymphony.xwork2.ActionSupport;
import com.zhiqi.model.User;
import com.zhiqi.service.UserService; public class UserAction2 extends ActionSupport { /**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService=new UserService();
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
} }

  模型驱动(ModelDriven)

<form action="login" method="post">
用户名:<input type="text" name="userName"/>
密码:<input type="text" name="password"/>
<input type="submit" value="登录"/>
</form>

  

<action name="login" class="com.zhiqi.action.UserAction3">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>

  

package com.zhiqi.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.zhiqi.model.User;
import com.zhiqi.service.UserService; public class UserAction3 extends ActionSupport implements ModelDriven<User>{ /**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService=new UserService();
private User user=new User();
@Override
public String execute() throws Exception {
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
} }

  

struts.xml 配置

一,pageckage 配置
name 包名
extends 继承
namespace 包命名空间
abstract 抽象包
二,action 配置
name action 名
class 处理类
method 方法

三,分模块配置方法
<include file="" ></include>

Struts2,get/set 自动获取/设置数据ActionSupport 类的更多相关文章

  1. [TimLinux] JavaScript 获取设置在CSS类中的属性值

    1. 设置属性值 // 常用方式 var myEl = document.getElementById('idMyEl'); myEl.style.display = "none" ...

  2. struts2中的action为什么要继承ActionSupport类,不继承也可以,有什么好处?

    简单来说,有很多相关的方法都加载进来,你直接调用就行了,而且在安全上和稳定性上做了很好的处理 实际上继承ActionSupport之后 就等同于实现了很多接口 Action,Validateable, ...

  3. Swift - 异步获取网络数据封装类

    使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据.下面通过对数据获取类进行封装,演示如何进行数据请求与接收. 1,HttpContr ...

  4. servlet自动获取前端页面提交数据

    servlet自动获取前端页面jsp提交数据 以下是本人在学习过程中,因前端页面提交参数过多,后台servlet封装实体类过于麻烦而写的一个工具类,应用于jsp/servlet数据提交后,基于MVC+ ...

  5. Mysql设置字段自动获取时间

    问题:现在在用户表中有一个字段表示用户创建的时间 第一个想法是写一段程序获得系统当前时间,想想就太麻烦了,果断放弃,之后想到了存储过程和函数,再想想还要编写存储过程或者函数的代码,有点放弃的想法,但是 ...

  6. 自动获取淘宝API数据访问的SessionKey

    最近在忙与淘宝做对接的工作,总体感觉淘宝的api文档做的还不错,不仅有沙箱测试环境,而且对于每一个api都可以通过api测试工具生成想要的代码,你完全可以先在测试工具中测试之后再进行代码的编写,这样就 ...

  7. java工作流系统表单自动 获取数据

    关键词:工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流  bpm工作流系统  java工作流主流框架  自定义工作流引擎 表单设计器  流程设计器 什么是数据自动获 ...

  8. 使用 shell 脚本自动获取发版指标数据

    问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...

  9. 转载-centos网络配置(手动设置,自动获取)的2种方法

    转载地址:http://blog.51yip.com/linux/1120.html 重新启动网络配置 # service network restart 或 # /etc/init.d/networ ...

随机推荐

  1. [转]Cannot deserialize the current JSON array (e.g. [1,2,3]) into type

    string content =[{"id": 3636, "is_default": true, "name": "Unit&q ...

  2. 【转】Nginx搭建反向代理服务器过程详解

    阅读目录 1.1 反向代理初印象 1.2 反向代理的作用 2.1 Nginx是神马? 2.2 Nginx的应用现状 2.3 Nginx的核心特点 3.1 准备一个ASP.NET网站部署到IIS服务器集 ...

  3. C语言 数组名不是首地址指针

    今天上计算机系统课的时候老师讲到了C中的聚合类型的数据结构.在解释数组名的时候说"数组名是一个指针,指向该数组的第一个元素",附上ppt(第二行): 我觉得这是不正确的,是一个常见 ...

  4. Maven父子模块引入依赖问题

    公共模块如何放到父pom中,而子pom无需再次引入???

  5. python Scraping

    http://docs.python-guide.org/en/latest/scenarios/scrape/

  6. 自封装的AJAX

    /* * *create by royal in 2019/1/23 * *royalAjax 自封装ajax函数 * *paramsObj JSON类型参数 *require params: * t ...

  7. mysql 报错 Operand should contain 1 column(s)

    报错 Operand should contain 1 column(s) 原因 select 后面加了 () select (x,x,x)

  8. 科学计算库Numpy——运算

    np.multiply(array1,array2) 该函数用于数组中对应位置上的数相乘. 一维向量 二维数组 np.dot(array1,array2) 两个数组都是一维向量 数组中对应位置上的数相 ...

  9. kubectl alias auto complete

    平时kubectl命令管理kubernetes,敲久了就觉得比较麻烦,想着使用alias k来代替kubectl,可是当输入k时没有了自动补全的功能 这里在 ~/.bashrc 添加如下配置后,可以自 ...

  10. Sonya and Robots CodeForces - 1004C (思维题)

    Sonya and Robots time limit per test 1 second memory limit per test 256 megabytes input: standard in ...