Struts 2 was originally known as WebWork 2. After working independently for several years, the WebWork and Struts communities joined forces to create Struts 2. The 2.x framework is the best choice for teams who value elegant solutions to difficult problems.
1.struts-2.0.11.1
2.
- Servlet API 2.4
- JSP API 2.0
- Java 5
3.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4.struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<!--<constant name="struts.custom.i18n.resources" value="messageResource"></constant>-->
<package name="com.xmddl.struts.logon" extends="struts-default" namespace="/example">
<interceptors>
<interceptor-stack name="helloWorldStack">
<interceptor-ref name="paramsPrepareParamsStack"/>
</interceptor-stack>
</interceptors>
<!-- 全局results配置 -->
<global-results>
<result name="error">/error.jsp</result>
<result name="input">/index.jsp</result>
</global-results>
<action name="CommonAction"
class="com.xmddl.common.CommonAction">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
<action name="LogonAction" class="com.xmddl.struts.logon.LogonAction">
<result>/index.jsp</result>
</action>
</package>
<package name="com.xmddl.struts.business" extends="struts-default"
namespace="/example">
<action name="UserInfo"
class="com.xmddl.struts.business.UserInfoAction">
<result name="success" type="dispatcher">/helloworld.jsp</result>
<param name="url">http://www.sina.com</param>
</action>
</package>
</struts>
5.action
package com.xmddl.struts.logon;
import org.apache.struts2.interceptor.validation.SkipValidation;
import com.xmddl.common.CommonAction;
import com.xmddl.common.MockDB;
import com.xmddl.common.XmddlException;
import com.xmddl.struts.vo.UserInfoVO;
/**
*
* @author Administrator
*
*/
public class LogonAction extends CommonAction {
/**
*
*/
private static final long serialVersionUID = 1L;
private UserInfoVO uservo = new UserInfoVO();
public String execute() throws Exception {
System.out.println(uservo.getUser().getUsername() + "\t"
+ uservo.getUser().getPassword());
return SUCCESS;
}
/**
* 功能:增加
*
* @return
*/
@SkipValidation
public String saveUserInfo() {
// try {
// if (uservo.getUser().getUsername().equals("xmddl369"))
// throw new XmddlException("Hello World!");
// } catch (Exception ex) {
// this.addActionMessage(ex.getMessage());
// return ERROR;
// }
MockDB.insert2DB(uservo.getUser());
uservo.getUserList().addAll(MockDB.searchAll2DB());
return SUCCESS;
}
/**
* 功能:查询
*
* @return
*/
@SkipValidation
public String searchUserInfo() {
if(uservo.getUser().getUserid()!=null)
{
uservo.getUserList().add(MockDB.searchFromDB(uservo.getUser().getUserid()));
uservo.setUser(MockDB.searchFromDB(uservo.getUser().getUserid()));
}else
{
uservo.getUserList().addAll(MockDB.searchAll2DB());
uservo.setUser(null);
}
return SUCCESS;
}
/**
* 功能:删除
*
* @return
*/
@SkipValidation
public String deleteUserInfo() {
MockDB.deleteFromDB(uservo.getUser());
uservo.getUserList().addAll(MockDB.searchAll2DB());
return SUCCESS;
}
/**
* 功能:更新
*
* @return
*/
@SkipValidation
public String updateUserInfo() {
MockDB.update2DB(uservo.getUser());
uservo.getUserList().addAll(MockDB.searchAll2DB());
return SUCCESS;
}
public UserInfoVO getUservo() {
return uservo;
}
public void setUservo(UserInfoVO uservo) {
this.uservo = uservo;
}
}
6.xxx-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="uservo.user.userid">
<field-validator type="requiredstring">
<message key="userid.required"/>
</field-validator>
</field>
<field name="uservo.user.username">
<field-validator type="requiredstring">
<message key="username.required"/>
</field-validator>
</field>
<field name="uservo.user.password">
<field-validator type="requiredstring">
<message key="password.required"/>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">15</param>
<message key="password.length"/>
</field-validator>
</field>
</validators>
7.index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div style="text-align: center; font-size: 14px; font-weight: bold">
This is my struts2 JSP test page.
</div>
<br>
<div style="text-align: right;">
<s:include value="/LanguageSelector.jsp" />
</div>
<!--
<s:text name="loginPage" />
<s:property value="getText('loginPage')" />
<s:textfield key="loginPage"/>
<s:label value="%{#SESSION_LOCALE}" />
-->
<s:form action="LogonAction" name="main" namespace="/example" cssStyle="text-align:center">
<!--
<s:bean name="com.xmddl.struts.vo.UserInfo" id="ui">
<s:param name="sex" value="1"/>
</s:bean>
<s:bean name="com.xmddl.struts.vo.UserInfoVO" id="uivo">
<s:param name="user" value="ui"/>
</s:bean>
<s:property value="#uivo.user.sex"/> -->
<table border="1" width="50%" cellpadding="0" cellspacing="0">
<thead>
<tr>
<td colspan="2"
style="text-align: center; font-size: 14px; font-weight: bold">
CRUD Test
</td>
</tr>
<tr>
<td>
<s:textfield label="%{getText('userId')}" name="uservo.user.userid"
value="%{uservo.user.userid}" />
<s:textfield label="%{getText('userName')}" name="uservo.user.username"
value="%{uservo.user.username}" />
<s:textfield label="%{getText('userAge')}" name="uservo.user.age"
value="%{uservo.user.age}" />
<s:radio list="#{1:'男',0:'女'}" name="uservo.user.sex" label="%{getText('userSex')}" />
<s:select list="#{1:'厦门',2:'福州',3:'宁德'}" name="uservo.user.from" label="%{getText('userFrom')}"></s:select>
<s:password label="%{getText('userPass')}" name="uservo.user.password"
value="%{uservo.user.password}" cssStyle="display:none"/>
</td>
</tr>
</thead>
</table>
<table border="1" width="50%" cellpadding="0" cellspacing="0">
<tbody>
<tr
class="<s:if test="#status.even">even</s:if><s:else>odd</s:else>">
<td>
<s:property value="getText('userId')" />
</td>
<td>
<s:property value="getText('userName')" />
</td>
<td>
<s:property value="getText('userSex')" />
</td>
<td>
<s:property value="getText('userAge')" />
</td>
<td>
<s:property value="getText('userFrom')" />
</td>
<td>
<s:property value="getText('update')" />
</td>
<td>
<s:property value="getText('delete')" />
</td>
</tr>
<s:iterator value="uservo.userList" status="status">
<tr>
<td>
<s:property value="userid" />
</td>
<td>
<s:property value="username" />
</td>
<td>
<s:if test="sex==1">男</s:if>
<s:else>女</s:else>
</td>
<td>
<s:property value="age" />
</td>
<td>
<s:if test="from==1">厦门</s:if>
<s:if test="from==2">福州</s:if>
<s:if test="from==3">宁德</s:if>
</td>
<td>
<a
href="">修改</a>
</td>
<td>
<a
href="/Struts2Demo/example/LogonAction!deleteUserInfo.action?uservo.user.userid=<s:property value="userid" />&user.username=<s:property value="username" />">删除</a>
</td>
</tr>
</s:iterator>
</tbody>
<tfoot>
<tr>
<td style="text-align:right" colspan="7">
<s:submit value="%{getText('login')}" method="execute"
theme="simple" cssStyle="display:none"/>
<s:submit value="%{getText('save')}" method="saveUserInfo"
theme="simple" />
<s:submit value="%{getText('update')}" method="updateUserInfo"
theme="simple" />
<s:submit value="%{getText('search')}" method="searchUserInfo"
theme="simple" />
<s:reset value="%{getText('reset')}" theme="simple" />
</td>
</tr>
</tfoot>
</table>
</s:form>
</body>
</html>
8.look like:
- 描述: Two
- 大小: 38.6 KB
- 描述: One
- 大小: 38.6 KB
分享到:
相关推荐
Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...
这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它在Java社区中广泛使用,因其灵活性、可扩展性和丰富的插件库而受到赞誉。Struts2的核心是Action类,它处理HTTP...
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了构建基于Java EE的Web应用程序的过程。本资源包含"struts2所有jar包程序文件",是...
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...
Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...
struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...
包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...