Struts2教程2:处理一个form多个submit

合集下载

form表单提交的几种方法

form表单提交的几种方法

form表单提交的⼏种⽅法⼀:submit 提交表单,但是此时有⼀个提交按钮的样式,需要进⾏⼀些修改<form action="" method="" id="forms"><input type="text" name="username" value="" /><input type="password" name="pwd" value="" /><input type="submit" value="提交"/></form> ⼆:利⽤js来提交<!--HTML--><form action="" method="" id="test_form"><input type="text" name="username" value="" /><input type="password" name="pwd" value="" /><button type="button" onclick='doSubmitForm()'>提交<button/></form><script>var form = document.getElementById('test_form');//再次修改input内容form.submit();</script> 三 这种⽅法有个缺点就是,打乱正常的表单提交程序,通常⽤户输⼊完成后点击回车键就可以提交,但是这个⽅法实现不了,所以,使⽤下⾯的⽅法便可以解决这个问题,,通过form⾃⾝的onsubmit⽅法,来触发提交,然后进⾏input的修改:<!--HTML--><form id='test_form' action='' method='' omsubmit='return checkForm()'><input type='text' name='username' value=''/><input type='password' name='pwd' value =''/><button type='submit'>提交<button/><form/><script>function checkForm(){var form = document.getElementById('test_form');//可在此修改input//进⾏下⼀步return true;}<script/> 注意,checkForm()⽅法中,return true时,表单才会正常提交,为false时,浏览器将不会提交,通常是⽤户的密码输⼊错误时,终⽌提交。

struts2入门手册

struts2入门手册

struts2入门手册首先这个教程是基于你已经安装了myeclipse的基础上的,如果你还没有安装myeclipse 工具软件的话,你需要马上去安装一个。

如果你已经有了工具软件了的话,现在就按照以下步骤来入门struts2吧。

一、下载struts2进入struts的官网/,点击download,选择Full Distrybution:下的struts2-xxx-all.zip,下载struts2的最新版本,将压缩包解压,放置到D盘目录下。

二、解压struts2进入你解压后的struts2文件夹中,到D:\struts2-xxx\apps中,解压其中的struts2-blank.war 压缩文件到D:\struts2-xxx\example,这是struts2提供的基础例子,里面的WEB-INF\lib目录下的包正是struts2正常工作所需要的基本包。

三、导入struts2基本包打开你的myeclipse,创建一个web project工程,命名为test(你也可以自己随意起一个),不要急着点击Finish,先选择Next>,继续选择Next>,在弹出的对话框中把第二个单选框打勾,如图,再点击Finish。

创建好之后在你创建的工程上目录下的WebRoot/WEB-INF/lib目录上单击右键,选择import...,选择General下的File System,点击Next>,选择Browse...,浏览选择到D:\struts\example\WEB-INF\lib目录,点击确定。

选择Sellct All,点击Finish,就完成了struts需要的最基础的核心包的导入。

四、用struts实现一个简单的登陆验证1.修改工程目录下的WebRoot\WEB-INF目录下的web.xml文件,将里面的内容替换为如下代码:<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>test</display-name><!-- 设置初始页面的URL --><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><!-- 设置struts过滤器 --><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></web-app>2.在工程的src目录下创建struts.xml,代码如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 是否开启动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation"value="false"/> <!-- 指定被struts2处理的请求的后缀类型,多个用逗号隔开 --><constant name="struts.action.extension"value="action"/><!-- 设置浏览器是否静态缓存内容,开发阶段最好关闭 --><constant name="struts.devMode"value="true"/><!-- 设置当struts.xml改动后,是否重新加载,默认为false,开发环境下最好打开 --> <constant name="struts.configuraction.xml.reload"value="true"/> <package name="myPackage"namespace="/"extends="struts-default"> <action name="login"class="action.LoginAction"><result name="success">/welcome.jsp</result> <result name="input">/login.jsp</result></action></package></struts>3.在工程的src目录下创建package(包),命名为action,在action中新建class,命名为LoginAction,代码如下:package action;import javax.servlet.http.HttpSession;import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.ServletActionContext;@SuppressWarnings("serial")public class LoginAction extends ActionSupport {private String name;private String password;public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String forward() throws Exception {return SUCCESS;}//重载ActionSupport中的execute()方法public String execute() throws Exception {//验证输入的Name是否为"name",是则返回"success"否则返回"input"if("name".equals(name)) {HttpSession session = ServletActionContext.getRequest().getSession();session.setAttribute("name", name);return SUCCESS;} else {return INPUT;}}}4.在工程的WebRoot目录下创建login.jsp,代码如下:<%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Login</title></head><body><!-- 创建一个登陆表单 --><s:url action="login"id="loginUrl"></s:url><s:form action="%{loginUrl}"method="post"><s:textfield label="Name"name="name"/><s:password label="Password"name="password"/><s:submit></s:submit></s:form></body></html>5.在工程的WebRoot目录下创建welcome.jsp,代码如下:<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Welcome</title></head><body><h1>登陆成功</h1></body></html>现在就来验证一下我们的登陆页面吧,选择工具栏中的按钮,在弹出的对话框中单击project后的矩形选框,从下拉列表中选择你创建的工程,然后单击Add,从弹出的对话框中单击sever后的矩形选框,从下拉列表中选择tomcat7,单击Finish。

struts2核心工作流程与原理

struts2核心工作流程与原理

struts2核心工作流程与原理做为一名技术人员,听到太多关于.net和java的比较的话题。

我想对那些技术人员说,请先了解一下什么是java(或者.net)吧,其实你根本不了解。

这是Struts2官方站点提供的Struts 2 的整体结构。

一个请求在Struts2框架中的处理大概分为以下几个步骤1.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action”就是提起一个(HttpServletRequest)请求。

2.请求被提交到一系列(主要是三层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。

注意这里是有顺序的,先ActionContextCleanUp,再其他过滤器(SiteMesh等)、最后到 FilterDispatcher。

3.FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。

下面粗略的分析下我理解的FilterDispatcher工作流程和原理:FilterDispatcher进行初始化并启用核心doFilter其代码如下:public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain ) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;ServletContext servletContext = filterConfig.getServletContext();// 在这里处理了HttpServletRequest和HttpServletResponse。

struts2中struts.xml文件详解

struts2中struts.xml文件详解

<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
</action>
</package>
</struts>
上面代码的两个动作的class属性都指向同一个类,name为这个类起了两个动作别名:test和my。在动作my中,使用了method属性指定要要运行的方法名为my。
在MyAction类中必须要有my方法,代码如下:
<struts>
<package name="demo" extends="struts-default"
>
<action name="test" class="action.MyAction">
</action>
<action name="my" class="action. MyAction" method="my">
<?xml version="1.0" encoding="UTF-8" ?>

Struts2详细实例教程

Struts2详细实例教程

Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。

五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。

七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。

在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。

在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。

struts2

struts2
struts核心 包
加载struts2
要使用struts2,必须在web.xml中进行配置
以过滤器的形式加载 struts2
过滤器所在包: org.apache.struts2. dispatcher.FilterDi spatcher
加载struts2
以过滤器的形式加载struts2
struts2以过滤器的形式加载到工程中,在web.xml中配置: <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>
struts2中的命名空间起到模块化的作用。这个包下 的所有Action(请求的处理类),都应该以: /[命名空间名]/[Action名]来访问 命名空间的名字都应该以“/”开头,如果不配置命名 空间,则默认的就是namespace=“/”。 一个包下不能存在名字相同的Action
struts2常用配置-Action配置
name属性配置Action的名字
class属性配置Action类的完整类路径,说明 用哪个类处理提交的请求。
struts2常用配置-Action配置
LoginAction.java public class LoginAction extends ActionSupport { private String userName; private String password; public void setUserName(String userName) { erName = userName; } public void setPassword(String password) { this.password = password; } public String execute() throws Exception { return SUCCESS; } } 每个请求处理类必须继 承ActionSupport 对应页面表单元素名 对应的表单元素名必须 给出set方法 处理请求的方法。方法 名默认为execute struts2中,所提交的请求 应以.action结尾

Struts2框架搭建教程

Struts2框架搭建教程

Struts2教程1:第一个Struts2程序在本系列教程中我们将学习到Struts2的各种技术。

在本教程中使用的工具和程序库的版本如下:开发工具:MyEclipse6Web服务器:Tomcat6Struts版本:Struts2.0.11.1JDK版本:JDK1.5.0_12J2EE版本:Java EE5.0在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下:http://localhost:8080/struts2/index.jsp由于MyEclipse6目前并不支持Struts2,所以我们需要到去下载Struts2安装包。

要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。

struts2-core-2.0.11.1.jarxwork-2.0.4.jarcommons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarStruts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。

Struts2实际上是在Webwork基础上构建起来的MVC框架。

我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。

既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。

如果大家使用过Struts1.x,应该对建立基于Struts1.x的Web程序的基本步骤非常清楚。

让我们先来回顾一下建立基于Struts1.x的Web程序的基本步骤。

1.安装Struts。

由于Struts的入口点是ActionServlet,所以得在web.xml中配置一下这个Servlet。

Struts2-02

Struts2-02

在Action类中获取
• • • • public class LoginAction extends ActionSupport{ } String u = this.getText("username"); System.out.println("====="+u);
interceptor拦截器
资源国际化
• • • 如果开发者需要在项目应用中提供国际化功能,则需要指定 struts.custom.i18n.resources常量值 常量可以在配置文件struts.xml或者web.xml文件中定义 属性文件建议放到src目录下
struts.xml文件配置
• • • 在struts.xml文件中配置basename: I18N资源文件为globalMessages <constant name="struts.custom.i18n.resources" value="globalMessages" />
获取request对象
• • HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse();
使用IOC注入
局部异常声明
<action name="log*" class="com.sun.demo.LoginAction" method="{1}"> <result name="success" >/${rname}.jsp</result> <exception-mapping result="all" exception="ng.NullPointerException"> </exception-mapping> <result name="all">/exception.jsp</result> </action>

struts2 multipartrequest用法

struts2 multipartrequest用法

struts2 multipartrequest用法Struts2 MultipartRequest 使用方法:Struts2 是一个用于构建 Java Web 应用的开源框架,它提供了许多功能和工具来简化开发过程。

其中之一就是 MultipartRequest,它是用于处理涉及文件上传的请求的。

要使用 Struts2 的 MultipartRequest,首先需要在 Struts2 的配置文件中进行相应的配置。

1. 配置 web.xml 文件:在 web.xml 文件中,将 Struts2 的过滤器配置为请求的第一个过滤器。

```xml<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>```2. 配置 struts.xml 文件:在 struts.xml 文件中,添加对文件上传的支持。

示例如下:```xml<interceptors><!-- 其他拦截器配置 --><interceptor name="fileUpload"class="org.apache.struts2.interceptor.FileUploadInterceptor" /></interceptors><action name="uploadAction" class="com.example.UploadAction"><interceptor-ref name="fileUpload" /><interceptor-ref name="defaultStack" /><result>/success.jsp</result></action>```在上述示例中,我们定义了一个名为 "uploadAction" 的 action,使用了fileUpload 拦截器和 defaultStack 拦截器栈。

尚学堂Struts2_02

尚学堂Struts2_02

<param name=“excludeMethods”>m1,m2</param> <param name="includeMethods">m2</param>
</interceptor-ref> </action> 如果不指定excludeMethods和includeMethods,则所有方法都会被截拦器 截拦. 如果方法在excludeMethods和includeMethods都配置了,则 includeMethods取胜. 如果需要过滤多个方法,方法名之间用逗号隔开.
版权所有:尚学堂科技
尚学堂
手把手教程
Struts+Hibernate+Spring
HttpServletRequest
HttpServletResponse
核心控制器
Intercepter1
Intercepter2
Intercepter3
Action
Result
版权所有:尚学堂科技
尚学堂
手把手教程
版权所有:尚学堂科技
尚学堂Βιβλιοθήκη 手把手教程Struts+Hibernate+Spring
Struts2拦截器——工作原理
拦截器的执行过程是一个递归的过程,越是位于前面的拦截器越被先执行 ,但也是越晚退出。因此,拦截器的调用处理形成了“先进后出”的堆栈 的模式,因此也叫拦截器栈。
版权所有:尚学堂科技
尚学堂
Struts+Hibernate+Spring
Struts2拦截器——作用及意义 早期MVC框架将一些通用操作写死在核心控制器中,致使框 架灵活性不足、可扩展性降低 Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选 择和组合,增强了灵活性,有利于系统的解耦 截拦器是Struts2中最重要的概念之一,是Struts2灵魂。 Struts2中有80%的功能都通过截拦器实现 提高更高层次的解耦,无须侵入框架本身 便可以添加新的功 能.

form 表单 submit 用法

form 表单 submit 用法

form 表单 submit 用法表单是网站开发中常用的元素之一,用于收集用户的数据和信息。

而在提交表单的过程中,使用 submit 方法是一种常见的方式。

本文将介绍 form 表单中 submit 方法的用法,包括如何触发表单的提交、表单提交之前的验证、以及在提交完成后的处理。

一、触发表单提交:表单的提交可以通过直接点击 submit 按钮或者调用 submit 方法来实现。

submit 方法可以通过JavaScript 代码来进行调用,例如在JavaScript 函数中使用以下代码:document.getElementById('formId').submit();在代码中,formId 是表单元素的 ID,通过 getElementById 方法获取到表单元素,然后调用 submit 方法即可触发表单的提交。

通过这种方式,我们可以在用户点击某个按钮或者其他条件满足的情况下,动态地触发表单的提交。

二、表单提交前的验证:在提交表单之前,有时候我们需要对表单中的数据进行验证,以确保用户输入的数据符合要求。

可以通过 JavaScript 在提交表单之前执行相应的验证逻辑。

以下是一个示例代码:function validateForm() {var form = document.getElementById('formId');var inputValue = form.input.value;if (inputValue === '') {alert('请输入内容!'); // 弹出提示框return false; // 阻止表单提交}return true; // 允许表单提交}在这段代码中,我们先获取到表单元素,然后通过输入框的 name 属性来获取输入框的值,并进行判断。

如果输入框的值为空,则弹出提示框并返回 false,阻止表单的提交;否则,返回 true,允许表单提交。

struts2的Action参数详细说明

struts2的Action参数详细说明

Struts2 Action参数详细说明1,Action的配置格式基本为:<package name="包名字" extends="继承的包" namespace="空间名" > <action name="访问的名称" class="处理请求的类"><result name="处理类返回的结果名称">该结果名称所对应的JSP页面</result> </action></package>如:<package name="aa" extends="struts-default" ><action name="myaa" class="com.test.MyAction"><result name="success">/test/msg.jsp</result></action></package>访问时:<a href="myaa.action" >访问myaaAction</a>2,method属性,该属性可以把一个类的多个方法映射为多个Action,如:类文件public class MethodAction extends ActionSupport{public String add(){return SUCCESS;}public String delete(){return SUCCESS;}public String modify(){return SUCCESS;}public String query(){return SUCCESS;}}struts.xml配置文件:<action name="访问的方法名" class="处理的类" method="处理的方法名"> <result name="结果页名">结果页面</result></action><action name="add" class="com.struts2.chen.MethodAction" method="add"> <result name="success">/method/addRes.jsp</result></action><action name="delete" class="com.struts2.chen.MethodAction" method="delete"> <result name="success">/method/deleteRes.jsp</result></action><action name="modify" class="com.struts2.chen.MethodAction" method="modify"> <result name="success">/method/modifyRes.jsp</result></action><action name="query" class="com.struts2.chen.MethodAction" method="query"> <result name="success">/method/queryRes.jsp</result></action>页面:<a href="add.action">增加</a><br /><a href="delete.action">删除</a><br /><a href="modify.action">修改</a><br /><a href="query.action">查询</a><br />3。

form表单的submit方法

form表单的submit方法

form表单的submit方法表单(Form)是HTML中的一个关键元素,用于收集用户输入的数据,并将其发送到服务器以进行处理。

表单的submit方法是用于触发表单提交的JavaScript方法。

通过submit方法,开发者可以在不点击实际提交按钮的情况下通过编程方式提交表单。

以下是关于表单的submit方法的详细解释:1. 表单的基本结构:表单是HTML中的一个元素,通常包含在<form>和</form>标签之间。

以下是一个简单的表单结构的示例:html<form id="myForm"action="/submit"method="post"><!-- 表单元素(input、select、textarea等)--><input type="text"name="username"placeholder="用户名"><input type="password"name="password"placeholder="密码"><button type="submit">提交</button></form>2. 表单的submit方法:表单对象提供了一个名为submit的方法,可以通过JavaScript调用。

这个方法用于手动触发表单的提交操作。

通过这种方式,可以在不实际点击提交按钮的情况下提交表单。

3. submit方法的基本语法:javascriptdocument.getElementById("myForm").submit();上述示例中,"myForm"是表单的ID,通过getElementById方法获取到表单对象,然后调用submit方法触发表单提交。

form 表单 submit 用法

form 表单 submit 用法

表单(form)在网页开发中起着非常重要的作用,它是用户与网页交互的重要方式之一。

form表单主要用于用户提交数据给服务器,以便进行进一步的处理。

而submit则是form表单中非常重要的一个属性,它用来定义提交按钮,当用户点击提交按钮时,form表单中的数据将被提交给服务器。

在实际开发中,form表单和submit按钮的用法是非常常见的,下面我们将针对form表单和submit按钮的用法进行详细的介绍。

一、form表单的基本结构在HTML中,form表单的基本结构如下所示:<form action="提交位置区域" method="提交方式"><!-- form表单的内容 --><input type="submit" value="提交按钮" /></form>上面的代码中,form标签用来定义一个表单,其中action属性指定了表单数据提交的位置区域,method属性指定了表单数据提交的方式,常见的方式有get和post两种。

在form标签的内部,可以放置各种表单元素,比如输入框、下拉框、单选框、复选框等。

通过input 标签的type属性为submit来定义提交按钮。

二、submit按钮的用法submit按钮是form表单中的一个重要部分,它用来触发表单数据的提交。

在实际开发中,我们可以为submit按钮定义不同的样式和行为,以便满足不同的需求。

1. 提交按钮的基本用法在form表单中定义submit按钮非常简单,只需在form标签内部使用input标签,并将type属性设置为submit即可,如下所示:<input type="submit" value="提交按钮" />上面的代码中,type属性指定了输入框的类型为submit,value属性指定了按钮上显示的文字为“提交按钮”。

struts2常用标签详解

struts2常用标签详解

struts2标签详解A:<s:a xhref=""></s:a>-----超链接,类似于html里的<a></a><s:action name=""></s:action>-----执行一个view里面的一个action<s:actionerror/>-----如果action的errors有值那么显示出来<s:actionmessage/>-----如果action的message有值那么显示出来<s:append></s:append>-----添加一个值到list,类似于list.add();<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajaxB:<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值C:<s:checkbox></s:checkbox>-----复选框<s:checkboxlist list=""></s:checkboxlist>-----多选框<s:combobox list=""></s:combobox>-----下拉框<s:component></s:component>-----图像符号D:<s:date/>-----获取日期格式<s:datetimepicker></s:datetimepicker>-----日期输入框<s:debug></s:debug>-----显示错误信息<s:div></s:div>-----表示一个块,类似于html的<div></div><s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框E:<s:if test="#name=‟hujianqiang‟">asdfasdf</s:if><s:elseif test=""></s:elseif><s:else></s:else>-----这3个标签一起使用,表示条件判断F:<s:fielderror></s:fielderror>-----显示文件错误信息<s:file></s:file>-----文件上传<s:form action=""></s:form>-----获取相应form的值G:<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用H:<s:head/>-----在<head></head>里使用,表示头文件结束<s:hidden></s:hidden>-----隐藏值I:<s:i18n name=""></s:i18n>-----加载资源包到值堆栈<s:include value=""></s:include>-----包含一个输出,servlet或jsp页面<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入<s:iterator></s:iterator>-----用于遍历集合L:<s:label></s:label>-----只读的标签M:<s:merge></s:merge>-----合并遍历集合出来的值O:<s:optgroup></s:optgroup>-----获取标签组<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框P:<s:param></s:param>-----为其他标签提供参数<s:password></s:password>-----密码输入框<s:property/>-----得到'value'的属性<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性R:<s:radio list=""></s:radio>-----单选按钮<s:reset></s:reset>-----重置按钮S:<s:select list=""></s:select>-----单选框<s:set name=""></s:set>-----赋予变量一个特定范围内的值<s:sort comparator=""></s:sort>-----通过属性给list分类<s:submit></s:submit>-----提交按钮<s:subset></s:subset>-----为遍历集合输出子集T:<s:tabbedPanel id=""></s:tabbedPanel>-----表格框<s:table></s:table>-----表格<s:text name=""></s:text>-----I18n文本信息<s:textarea></s:textarea>-----文本域输入框<s:textfield></s:textfield>-----文本输入框<s:token></s:token>-----拦截器<s:tree></s:tree>-----树<s:treenode label=""></s:treenode>-----树的结构U:<s:updownselect list=""></s:updownselect>-----多选择框<s:url></s:url>-----创建urlStruts2常用的Ajax标签Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。

一个表单的多按钮提交

一个表单的多按钮提交
<input type="button" onClick="history.back();" value="返回" id="backhistory">
<script>
function savedraft(){
document.getElementById("saveD").value="savedraft";
1、在整个表单中,不应有名字为action或submit的标签,否则将会产生"对象不支持此属性和方法"的错误(但是在firefox中这个没有报错)。如代码 "<input type=''xxxx'' name=''action'' >"在表单中是不允许出现的;
2、在form标签中应该存在name属性。即,应该给表单取一个名字。语句document.form.action和document.form.submit中的"form"也就是表单的名字。
document.getElementById('writemail').submit();
}
</script>
</form>
</coolcode>
其中<input type="hidden" name="saveD" value="">是关键,也就是设置一个hidden的input,在按了不同的按钮赋值给此hidden不同的值,那么在option.php?action=mailsend_out的处理步骤中只要判断saveD的value就可以了

Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射

Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
er = user;
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
@Override
或者使用myeclipse经常用的,指定basePath。
Action Method
配置:
<package name="user" extends="struts-default" namespace="/user">
<action name="userAdd" class="erAction" method="add">
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();

解决表单多次submit

解决表单多次submit

在java web工程中,当jsp向Servlet提交请求时,如何防止刷新提交(F5)?可以使用的方法有,在jsp中定义一个变量值,这个变量值应该是唯一的,可以使用算法来保证生成数据的唯一性,例如hash算法,或者生成一个随机数(Random),并将这个数值保存到一个Set中,并将Set保存在session中,提交Servlet时将这个参数传递过去,在Servlet中的处理:接到参数和session中的set后,判断set中有没有传来的参数值,如果没有则页面是刷新造成的,并不是来自页面的提交,这时不做insert data的处理。

jsp代码:<%//生成一个formhash,算法可以自己定,不随便重复就可以了Random ran = new Random();String formhash = String.valueOf(ran.nextInt());//读取当前session里面的hashCode集合,此处使用了Set,方便判断。

Set<String> formhashSession = (Set<String>)session.getAttribute("formhashSession");if (formhashSession == null) {formhashSession = new HashSet<String>();}// 检测重复问题while (formhashSession.contains(formhash)) {formhash = String.valueOf(ran.nextInt());}// 保存到session里面formhashSession.add(formhash);// 保存session.setAttribute("formhashSession", formhashSession);%><form>中增加:<input type="hidden" name="formhash" id="formhash"value="<%=formhash%>" />Servlet代码:// 拿到表单的formhashString formhash = request.getParameter("formhash");// 拿到session里面的集合Set<String> formhashSession = (Set<String>)session.getAttribute("formhashSession");// 如果没有,则是重复提交,或者非法提交if (formhashSession == null || !formhashSession.contains(formhash)) { System.out.println("重复提交!");}else{//正常的操作}// 最后,如果操作成功,从session里面把这个formhash 删掉!formhashSession.remove(formhash);session.setAttribute("formhashSession", formhashSession);参考文章:/java2000_net/archive/2008/02/25/2119298.aspx 第二种解决方法,参考struts的token(令牌)机制:在提交的时候在Servlet中根据用户的sessionid和当前时间的long值生成一个令牌(每次提交都会生成一个新令牌),将令牌保存在该用户的会话中,并将令牌的值以request属性形式传到前端页面,在前端页面的form中增加传递令牌的隐藏域<input type="hidden" name="clientToken" value="<%=clientToken%>" />,提交form的时候,也会将clientToken传入Servlet,如果session中保存的令牌值与传入的不同,则是重复提交,因为每次请求Servlet都会生成新的令牌,刷新时的令牌值是旧的令牌值,不是最新的令牌值。

form submit参数

form submit参数

form submit参数摘要:1.什么是form submit参数2.form submit参数的作用3.form submit参数的常见类型4.如何使用form submit参数5.form submit参数的安全问题及防范措施正文:form submit参数是在表单提交时,随表单数据一起传输到服务器的数据。

它可以帮助我们获取更多关于表单提交的信息,从而更好地处理用户提交的请求。

下面我们详细了解一下form submit参数的相关知识。

1.什么是form submit参数form submit参数是在表单提交时,随表单数据一起传输到服务器的数据。

它可以帮助我们获取更多关于表单提交的信息,从而更好地处理用户提交的请求。

2.form submit参数的作用form submit参数主要有两个作用:一是方便服务器获取表单提交的相关信息;二是可以作为客户端与服务器之间的通信协议,提高用户体验。

3.form submit参数的常见类型form submit参数的类型有很多,常见的有:- GET:通过URL传递参数,适用于数据量较小的情况。

- POST:通过HTTP请求体传递参数,相比GET更安全,适用于数据量较大的情况。

- PUT:通过HTTP请求体传递参数,用于更新资源。

- DELETE:通过HTTP请求体传递参数,用于删除资源。

4.如何使用form submit参数使用form submit参数主要分为以下几个步骤:- 在HTML表单中添加所需的输入框、选择框等元素。

- 为表单添加提交按钮,并设置按钮的type属性(如:type="submit")。

- 在服务器端处理表单提交的数据,例如使用PHP的$_POST或$_GET数组。

5.form submit参数的安全问题及防范措施form submit参数可能存在安全问题,例如:- CSRF(跨站请求伪造):攻击者诱使用户在当前网站发起请求,从而实现非法操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在很多Web应用中,为了完成不同的工作,一个HTML form标签中可能有两个或多个submit 按钮,如下面的代码所示:<!--[if !supportLineBreakNewLine]--><ht ml action="" method="post"><input type="submit" value="保存"/><input type="submit" value="打印"/></ht ml>由于在<form>中的多个提交按钮都向一个action提交,使用Struts2 Action的execute 方法就无法判断用户点击了哪一个提交按钮。

如果大家使用过Struts1.x就会知道在Struts1.2.9之前的版本需要使用一个LookupDispatchAction动作来处理含有多个submit 的form。

但使用LookupDispatchAction动作需要访问属性文件,还需要映射,比较麻烦。

从Struts1.2.9开始,加入了一个Event DispatchAction动作。

这个类可以通过java反射来调用通过request参数指定的动作(实际上只是判断某个请求参数是不存在,如果存在,就调用在action类中和这个参数同名的方法)。

使用EventDispatchAction必须将submit的name 属性指定不同的值以区分每个submit。

而在Struts2中将更容易实现这个功能。

当然,我们也可以模拟Event DispatchAction的方法通过request获得和处理参数信息。

但这样比较麻烦。

在Struts2中提供了另外一种方法,使得无需要配置可以在同一个action类中执行不同的方法(默认执行的是execute方法)。

使用这种方式也需要通过请求参来来指定要执行的动作。

请求参数名的格式为action!method.action注:由于Struts2只需要参数名,因此,参数值是什么都可以。

下面我就给出一个实例程序来演示如何处理有多个submit的form:【第1步】实现主页面(more_submit.jsp)<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib prefix="s" uri="/struts-tags" %><ht ml><head><title>My JSP 'hello.jsp' starting page</title></head><body><s:form action="submit.action"><s:textfield name="msg" label="输入内容"/><s:submit name="save" value="保存" align="left" method="save"/><s:submit name="print" value="打印" align="left" m ethod="print"/> </s:form></body></ht ml>在more_submit.jsp中有两个submit:保存和打印。

其中分别通过m ethod属性指定了要调用的方法:save和print。

因此,在Action类中必须要有save和print方法。

【第2步】实现Action类(MoreSubmitAction)package action;import javax.servlet.http.*;import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.interceptor.*;public class MoreSubmitAction extends ActionSupport implements Servlet Request Aware{private String m sg;private javax.servlet.http.HttpServletRequest request;// 获得HttpServletRequest对象public void setServletRequest(HttpServlet Request request) {this.request = request;}// 处理save subm it按钮的动作public String save() throws Exception{request.setAttribute("result", "成功保存[" + msg + "]");return "save";}// 处理print submit按钮的动作public String print() throws Exception{request.setAttribute("result", "成功打印[" + msg + "]");return "print";}public String getMsg(){return msg;}public void setMsg(String m sg){this.m sg = msg;}}上面的代码需要注意如下两点:save和print方法必须存在,否则会抛出ng.NoSuchMethodException异常。

Struts2 Action动作中的方法和Struts1.x Action的execute不同,只使用Struts2 Action动作的execute方法无法访问request对象,因此,Struts2 Action类需要实现一个Struts2自带的拦截器来获得request对象,拦截器如下:org.apache.struts2.interceptor. Servlet RequestAware【第3步】配置Struts2 Actionstruts.xml的代码如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="demo" extends="struts-default"><action nam e="submit" class="action.MoreSubmitAction"><result nam e="save">/result.jsp</result><result nam e="print">/result.jsp</result></action></package></struts>【第4步】编写结果页(result.jsp)<%@ page pageEncoding="GBK"%><ht ml><head><title>提交结果</title></head><body><h1>${result}</h1></body></ht ml>在result.jsp中将在save和print方法中写到request属性中的执行结果信息取出来,并输出到客户端。

启动Tom cat后,在IE中执行如下的URL来测试程序:http://localhost:8080/moresubmit/more_submit.jsp大家也可以直接使用如下的URL来调用save和print方法:调用save方法:http://localhost:8080/moresubmit/submit!save.action调用print方法:http://localhost:8080/moresubmit/submit!print.action。

相关文档
最新文档