主页: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. IOS view拖拽(触摸事件)

    • iOS中的事件可以分为3大类型 触摸事件 加速计事件 远程控制事件 响应者对象 • 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事 件.我们称之为“响应 ...

  2. 【BZOJ4698】[SDOI2008] Sandy的卡片(后缀数组+二分)

    点此看题面 大致题意: 给你\(N\)个序列,若定义两个相同子串为一个子串内所有数加上一个数后能变成另一个串,求所有序列中的最长相同子串的长度. 简单的转化 首先,我们对题目进行一个简单的转化. 要求 ...

  3. 回归树的原理及Python实现

    大名鼎鼎的 GBDT 算法就是用回归树组合而成的.本文就回归树的基本原理进行讲解,并手把手.肩并肩地带您实现这一算法. 1. 原理篇 1.1 最简单的模型 如果预测某个连续变量的大小,最简单的模型之一 ...

  4. Python小脚本程序

    本文旨在搜集最简单最原子性的代码块,简单清晰容易阅读,然后由用户自己组合.Python代码排版请自行修改. 这里是索引目录: 1. 下载网站文件 2. 下载网站多个文件 1. 下载网站文件 impor ...

  5. Incorrect key file for table './xx_db/xx_table.MYI'; try to repair it

    解决办法: 可以先运行 CHECK TABLE 表名 检查下是否存在错误. 然后运行 REPAIR TABLE 表名 进行修复.

  6. 实用小工具不定期合集(textarea 高度自适应、自动计算Y轴刻度、json转table)

    1.textarea高度自适应 这个非常有用,但是网上的解决方案都不尽人意,话不多说,上代码. function auto (elem) { var minHeight = 30 var change ...

  7. 51nod——2478 小b接水(预处理 思维)

    我本来想把每个谷都处理了,想了下觉得不好办.后来看其他人写的是处理每个位置,把每个位置可以接的水累加起来.整挺好. #include <bits/stdc++.h> using names ...

  8. 转载:java分布式服务框架Dubbo的介绍与使用

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  9. flock文件锁

    linux中的定时任务crontab会定时执行一些脚本,但是脚本的时间往往无法控制,当脚本的执行时间过长,可能会导致上一次任务的脚本还没执行完,下一次任务的脚本又开始执行的问题.这种情况下会出现一些并 ...

  10. 12.1.VUE学习之-循环li,if判断示例讲解class中应用表达式

    功能: 当点击按键时,改变当前循环数组里的status里的值, 判断staus里的当前的值来,切换显示 删除 和 恢复 的按钮 判断staus里的当前的值来改变span标签里的字体颜色样式 <! ...