文档库 最新最全的文档下载
当前位置:文档库 › php防止form重复提交的方法

php防止form重复提交的方法

php防止form重复提交的方法
php防止form重复提交的方法

用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。

1.使用客户端脚本

提到客户端脚本,经常使用的是JavaScript进行常规输入验证。在下面的例子中,我们使用它处理表单的重复提交问题,请看下面的代码:

当用户单击“提交”按钮后,该按钮将变为灰色不可用状态,如图5-6所示。

上面的例子中使用OnClick事件检测用户的提交状态,如果单击了“提交”按钮,该按钮立即置为失效状态,用户不能单击按钮再次提交。

还有一个方法,也是利用JavaScript的功能,但是使用的是OnSubmit()方法,如果已经提交过一次表单,将立即弹出对话框,代码如下:

在上例中,如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount 变量自加1,当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。

2.使用Cookie处理

使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,请见下面的代码:

if(isset($_POST['go'])){

setcookie("tempcookie","",time()+30);

header("Location:".$_SERVER[PHP_SELF]);

exit();

}

if(isset($_COOKIE["tempcookie"])){

setcookie("tempcookie","",0);

echo "您已经提交过表单";

}

?>

如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。关于Cookie的详细介绍,请参阅第10章“PHP会话管理”。

3.使用Session处理

利用PHP的Session功能,也能避免重复提交表单。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以

用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交,请见如下代码:

session_start();

//根据当前SESSION生成随机数

$code = mt_rand(0,1000000);

$_SESSION['code'] = $code;

?>

在页面表单上将随机数作为隐藏值进行传递,代码如下:

在接收页面的PHP代码如下:

session_start();

if(isset($_POST['originator'])) {

if($_POST['originator'] == $_SESSION['code']){

// 处理该表单的语句,省略

}else{

echo …请不要刷新本页面或重复提交表单!?;

}

}

?>

关于Session的内容,我们会在第10章“PHP会话管理”详细讨论,你可以直接查阅这一章,然后再返回本节继续阅读。

4.使用header函数转向

除了上面的方法之外,还有一个更简单的方法,那就是当用户提交表单,服务器端处理后立即转向其他的页面,代码如下所示。

if (isset($_POST['action']) && $_POST['action'] == 'submitted') {

//处理数据,如插入数据后,立即转向到其他页面

header('location:submits_success.php');

}

这样,即使用户使用刷新键,也不会导致表单的重复提交,因为已经转向新的页面,而这个页面脚本已经不理会任何提交的数据了。

5.8.4 表单过期的处理

在开发过程中,经常会出现表单出错而返回页面的时候填写的信息全部丢失的情况,为了支持页面回跳,可以通过以下两种方法实现。

1.使用header头设置缓存控制头Cache-control。

header('Cache-control: private, must-revalidate'); //支持页面回跳

2.使用session_cache_limiter方法。

session_cache_limiter('private, must-revalidate'); //要写在session_start方法之前

下面的代码片断可以防止用户填写表单的时候,单击“提交”按钮返回时,刚刚在表单上填写的内容不会被清除:

session_cache_limiter('nocache');

session_cache_limiter('private');

session_cache_limiter('public');

session_start();

//以下是表单内容,这样在用户返回该表单时,已经填写的内容不会被清空

将该段代码贴到所要应用的脚本顶部即可。

Cache-Control消息头域说明

Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置

Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。

请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh和

only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate和max-age。各个消息中的指令含义如表5-3所示。

缓存指令

说明

public

指示响应可被任何缓存区缓存

private

指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效

no-cache

指示请求或响应消息不能缓存

no-store

用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存

max-age

指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应

min-fresh

指示客户机可以接收响应时间小于当前时间加上指定时间的响应

max-stale

指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息

有关Session和Cookie的介绍,详细内容请参阅第10章“PHP会话管理”。

5.8.5 判断表单动作的技巧

表单可以通过同一个程序来分配应该要处理的动作,在表单中有不同的逻辑,要怎么判别使用者按下的按钮内容不过是个小问题。

其实只要通过提交按钮的name 就可以知道了,表单在提交出去的时候,只有按下的submit 类型的按钮才会被送到表单数组去,所以只要判断按钮的值就可以知道使用者按下哪一个按钮,以如下表单为例:

当使用者按下“a”按钮的时候btn=a,按下“b”按钮,则btn=b。

另外也可以通过提交按钮的名字(name)来判断,请见如下代码:

这样只要POST/GET的参数里面有a或b,就可以知道按下的按钮是哪个。

print_r($_POST);

?>

PHP JQUERY AJAX 提交表单FORM详解

PHP jQuery Ajax Form表单提交实例解析,包括创建一个表单html页面、添加JQuery代码、jquery ajax表单提交、jquery ajax表单验证、反馈信息给用户,php ajax 表单验证,php ajax提交表单,php ajax form验证,php ajax提交form。 本实例用到JQuery类库本身的函数和功能,所有表单信息利用PHPMailer类库邮件的形式发送。 1、创建一个表单html页面 表单部分html代码 这里用一个id为contact_form来包含整个包含信息;这是有意义的,稍后在JavaScript与用户交互信息的时候会用到,这里form标签的属性里面既包含了method和action;这个意义其实不大,因为Javascript直接操作DOM,所以没有这两个属性也是可以的;务必要给用户输入的input标签加独立的id,这和第二点原理类似。否则,无法看到正常的效果。 2、添加JQuery代码 这里假设你已经从JQuery官方网站上下载了JQuery基库,然后上传到了你的WEB服务器,并添加到你要使用的网页中。

现在新建一个JS文件 第1行的function()函数与Jquery的document.ready函数用法和功能相同,都是在DOM准备完毕后自动触发。第2行里面是一个单击触发函数click(),需要注意的是,在HTML一页提交按钮上需要放置一个名为“button”的Class,以模拟实现submit 提交表单的功能,从第二点我们可以看出,JQuery可以很好的将结构和逻辑分离。 3、jquery ajax表单验证 在实际应用中,这一步是必不可少的。在用户漏填,错填某个项目时,及时提示。

一个完整的PHP表单提交开发实例(提交订单入库并同时发送邮件到指定Email地址)

一个完整的PHP+MySQL开发实例 ——(提交订单入库并同时发送邮件到指定Email地址) 本例共包含以下文档:index.html (订单提交首页),order.php(接受表单数据,发送Email 邮件,打印表单),insert.php(提交表单数据入库),smtp.php(SMTP邮件发送类) 首先,设计数据库,规划数据表和字段 以下为实现代码(CSS什么的就不说了): A.[index.html]

Struts2学习笔记

Struts2项目的构建与配置 1.配置struts.xml (1)配置struts.xml可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的 参考项目的struts.xml文件。 (2)主要的配置如下: /hello.jsp value="true"表示是开发模式,当修改了配置时服务器会自动加载修改后的配置,不需要中期服务器,方便开发。 (3)namespace="/"与浏览器的访问地址有关,namespace的默认值为空。 (4)/hello.jsp action的name值与浏览器的访 问地址有关,当地址是“http://…/hello”时,浏览器就会返回result中的hello.jsp 的页面。 2.配置web.xml (1)配置web.xml也可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的 参考项目的web.xml文件 (2)主要配置如下: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 3.配置Struts2的jar包 (1)复制下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的参考项目的 WEB-INF\lib文件夹下的所有的jar包到我们自己项目的WEB-INF\lib文件夹下即可。 Struts.xml的配置 1.package的属性与配置 (1)package的使用说明:类似于Java程序里的package,主要用于区分同名的action。在真 正的项目开发中package通常来区分不同的模块。例如: (2)name属性:用于区分不同的package,此属性不能省略不写。 (3)extends属性:用于继承其他的package,继承了某个package就包含了某个package里 的所有配置,此属性可以省略不写,默认继承struts-default。 (4)namespace属性:表示浏览器访问的路径,此属性可以省略不写,默认为空,当此属性 为空时,该package里的action可以匹配浏览的任何请求的action。 (5)abstract属性:此属性的值为false表示此package非抽象的,若为true表示此package

免费的,php,mysql的,在线表格管理源码

竭诚为您提供优质文档/双击可除 免费的,php,mysql的,在线表格管理源 码 篇一:用php+mysql搭建聊天室功能实例代码 1、总体设计 1.1构思与规划: 聊天室的基本原理,就是把每个连上同一网页的用户传送的发言数据储存起来,然后将所有的发言数据传给每一用户。也就是说,用数据库汇集每个人的发言,并将数据库中的数据传给每一个人就实现了聊天室的功能。 1.2表设计 首先使用mysql建立表chat用来储存用户的发言: 复制代码代码如下: mysql>cReatetablechat ->(chtimedatatime, ->nickchaR(10)notnull, ->wordschaR(150)); 表中只设定了三个域,chtime是发言的时间,nick为发言者的昵称,words是发言的内容,发言最多150个字符

1.3网页设计 一个最简单的聊天室通常需要两个页框:一个页框是用户输入发言的表单,另一个用来显示大家的发言。所以代码段通常至少需要如下几段: 建立页框的结构(main.php) 显示大家发言的程序段(cdisplay.php) 传送用户发言的程序段(speak.php) 用户登录进入聊天室程序段(login.php) 2、代码设计 以上规划完成后,就可以着手代码设计了,采用php可以非常简明实现以上的功能。 2.1用户登录login.php,本段代码是一个完全html网页 复制代码代码如下: 用户登录 请输入您的昵称

用户提交自己的昵称后,就进入到聊天室,以下的处理交由main.php处理。 2.2页框主体代码段main.php: 复制代码代码如下: setcookie(“nick”,$nick)//用cookie记录用户昵称,是常用的传递变量方法 > 山西铝厂聊天室试用版ver1.0 2.3显示发言cdisplay.php 本代码段的任务是将表chat中的数据取出,显示在页框中。每次刷新时,取数据库中最近的15条发言。同时,为防止数据库无限增大,需设计删除陈旧数据的功能。代码

Struts2+Spring3+Hibernate4+Maven整合

Struts2+Spring3+Hibernate4+Maven整合 目录 1.建立Maven工程 2.搭建Spring3 3.搭建Struts2并整合Spring3 4.搭建Hibernate4并整合Spring3 内容 1.建立Maven工程 第一步: 第二步:

第三步:

第四步: 注意:这里的JDK要选择默认的,这样别人在使用的时候,如何JDk不一致的话也不会出错,如下图所示:

第五步: Maven标准目录 src/main/java src/main/resources src/test/java src/test/resources 第六步: 发布项目:Maven install 清除编译过的项目:Maven clean

OK,Mean 工程创建成功! 2. 搭建 Spring3

(1)下载Spring3需要的jar包 1.spring-core 2.spring-context 3.spring-jdbc 4.spring-beans 5.spring-web 6.spring-expression 7.spring-orm 在pom.xml中编写Spring3需要的包,maven会自动下载这些包。 org.springframework spring-core 3.1.2.RELEASE org.springframework spring-context 3.1.2.RELEASE org.springframework spring-jdbc 3.1.2.RELEASE org.springframework spring-beans 3.1.2.RELEASE org.springframework spring-web 3.1.2.RELEASE org.springframework spring-expression 3.1.2.RELEASE org.springframework spring-orm 3.1.2.RELEASE

struts2复习题(含答案)

Struts2复习题 1.以下属于struts2的控制器组件是: 2.以下属于struts2的体系结构的是:(多选) 控制器组件配置文件 3.以下属于struts2配置文件中的配置元素是:(多选) A. B. C. D. 4.关于struts1和struts2对比的说法正确的是: 要求Action类继承struts1框架中的Action父类,struts2中则不一定需要继承,可以是POJO 类 中的Action不是线程安全的,而struts2中的Action是线程安全的 和struts2中都使用ActionForm对象封装用户的请求数据 使用OGNL表达式语言来支持页面效果,struts2通过ValueStack技术使标签库访问值 5.以下关于ValueStack说法正确的是:(多选) A.每个Action对象实例拥有一个ValueStack对象 B.每个Action对象实例拥有多个ValueStack对象 中封装了需要传入下一个页面的值,这些值封装在ValueStack对象中 会在请求开始时被创建,请求结束时消亡 6.关于struts2配置文件说法正确的是: A.必须在WEB-INF/classes目录下 B.名字必须为 C.配置Action时,必须配置包信息 D.使用元素配置转发 7.在struts2配置中用()元素来配置常量: A. B. C. D. 8.关于struts2包的说法正确的是: 框架使用包来管理常量 框架定义包时必须指定name属性 框架中配置包时,必须继承自struts-default包,否则会报错 框架中使用包来管理Action 9.struts2中获取Servlet API的方法正确的是:(多选) A.使用ActionContext对象以解耦合的方法访问Servlet API B.使用ServletActionContext对象以解耦合的方式访问Servlet API C.使用ActionContext对象以耦合的方式访问Servlet API D.使用ServletActionContext对象以耦合的方式访问Servlet API 10.struts2动态调用的格式为: ! 11.如果要实现struts2的数据校验功能 A.普通Action类可以实现 B.继承自Action接口可以实现 C.继承自ActionSupport类可以实现 D.继承自ActionValidate类可以实现

php登录注册模板

竭诚为您提供优质文档/双击可除 php登录注册模板 篇一:php用户登录验证模块 7实现用户登录 >>>1创建登录表单 登录表单的html代码如下: userlogin .alert{color:red} .textinput{width:160px} .btn{width:80px} table{border:3pxdouble;background-color:#eeeeee;} -->

functiondocheck(){ if(https://www.wendangku.net/doc/6a16616659.html,ername.value==""){ alert(请输入你的用户名!); returnfalse; } if(document.frmlogin.password.value==""){ alert(请输入你的密码!); returnfalse; } } --> 用户名: 密码:

将以上代码保存为login.php文件并在浏览器中运行,显示页面中的登录表单如图2-16所示。 显示页面的登录表单 >>>2验证登录名和密码 用户在登录表单中输入登录信息之后,数据被提交回本页面login.php进行处理,下面在login.php的头部添加验证用户名和密码是否正确的代码。login.php代码更改如下:require_once(common.php);//引入公共文件,其中实现了sql注入漏洞检查的代码 $username=trim($_post[username]); //取得客户端提交的密码并用md5()函数时行加密转换以便后面的验证 $pwd=md5($_post[pwd]); //设置一个错误消息变量,以便判断是否有错误发生 //以及在客户端显示错误消息。其初值为空

Struts2的工作机制原理分析及实例

Struts2的工作机制分析及实例 一、概述 本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x 与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork 的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.wendangku.net/doc/6a16616659.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到 struts-2.1.0-src\struts-2.0.10\src\core\src\main\java目录下查看Struts2的源文件,如图14所示。 (图14) 二、主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork 的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

基于PHP+MySQL-学生成绩管理系统论文(模板)

一绪论 (2) 1.1课题简介 (2) 1.2项目开发的目标 (2) 二系统分析 (3) 2.1需求分析 (3) 2.2系统设计分析 (3) 2.2.1 用户功能区 (3) 2.2.2 管理员功能区 (3) 三概念结构设计 (4) 3.1各个实体的局部ER图 (4) 3.2系统功能模块图 (5) 3.2.1总体设计 (5) 3.2.2 学生用户模块 (6) 3.2.3 管理员模块 (6) 四逻辑结构设计 (7) 4.1数据库设计与实现 (7) 4.1.1数据库技术的现状与发展 (7) 4.2数据库逻辑结构设计 (8) 五系统功能设计与实现 (10) 5.1系统前台 (10) 5.2系统后台 (12)

一绪论 1.1 课题简介 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。学生成绩信息的管理是不容出错的,其学生基本信息、成绩管理等这些琐碎而又细致的工作,工作量是很大的,而且也不容许出错。如果是手工管理这些的话,那将耗费工作人员大量的时间和精力。用计算机来管理这些信息是非常方便,而且出错率小,可靠性高,查找方便,存储量也大。这些优点能够极大地提高对学生成绩管理的效率,也是管理趋向信息化重要条件。本系统是弥补某些学校成绩管理的不足,创建的一套行之有效的计算机成绩管理的方案。 1.2 项目开发的目标 建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: (1)系统应具有实用性、可靠性和适用性,同时注意到先进性。 (2)不同用户有不同的查询和修改权限,防止非法查询,非法修改。 (3)方便用户的操作,尽量减少用户的操作。

工作流设计参考_包括PHP实现

工作流设计参考(包括PHP实现) 本文关键词:php工作流,workflow 工作流设计的工作流很少有让人满意的,即便是国内用的比较多的jbpm,用起来也会觉得很便扭。再加上PHP中没有什么好用的工作流,于是干脆自己设计一个,设计的原则如下: 1 根据80/20原则,只使用wfmc模型中最符合自身应用的20%功能 2 充分吸收国内使用jbpm开发BOSS中遇到的问题,工作流引擎只负责参数的收集和流程的流转,具体和业务的控制,交给每个流程定制的控制类去实现。 3 表单采用简单的html+控制标签的方法实现 4 权限和模板引擎,以及其它辅助函数直接使用办公系统自带的框架 5 充分利用PHP语言的特点,流程设计是基于数据库的,程序上使用OO设计,但采用重对象的方法 6 不把可视化设计流程的工作交给最终客户,而且由设计时完成,因此不考虑流程版本更新的问题 一、工作流数据表设计

二、常见流程人工决策 领导传阅 部门领导审批 填写表单 结束 放弃

提交 同意 重填(退回) 不同意 完成 外部响应 发送支付信息 接收支付成功响应(外部WS触发该流程) 三、PHP设计 运行的函数由结点在设计时候决定,如果没有设定,就使用默认的函数。利用了PHP语言的以下特性 使用前可以用method_exists来检查。 WorkflowService.php

WorkflowService $defination $process $node $thread $input 用户输入的和流程有关的变量 list_defination(){ } init_process(defination_id){ global user; 取得$defination,得到业务的handler,例如WorkflowProposalHandler 建立$process行记录 } start_process(){ 调用WorkflowProposalHandler->start($process)//新建业务对象,并把业务类的参数例如proposal_id放到$process[‘context’]里面 init_thread(1); //默认调用第一个结点 } list_ my_thread (){ global user; } init_thread(node_index){ 取得$node 取得$process 修改$process为运行到当前结点 Switch($node[‘node_type’]) Case 1: 人工决策 建立$thread WorkflowProposalHandler-> init_function ($process,$node,$thread) 发送提醒 Case 2: 自动处理 建立$thread WorkflowProposalHandler-> init_function ($process,$node,$thread) 调用run_thread(thread_id) Case 3: 等待外部响应 建立$thread WorkflowProposalHandler-> init_function ($process,$node,$thread) Case 4: 分支 取得所有分支的子结点 init_thread(子结点) Case 5: 汇总: 取得所有前结点,如果所有前结点的Thread都结束了,调出下一结点

struts2.3.20环境搭建详解

Create Struts 2 Web Application With Artifacts In WEB-INF lib and Use Ant To Build The Application Edit Page Browse Space Add Page Add News You can download this complete example, Basic_Struts2_Ant, from Google Code - https://www.wendangku.net/doc/6a16616659.html,/p/struts2-examples/downloads/list. Click on the link for Basic_Struts2_Ant.zip and save the file to your computer. Unzip the file and you should have a folder named Basic_Struts2_Ant. In that folder is a README.txt file with instruction on how to build and run the application. Icon This tutorial assumes you already know how to create a Java web application, use Ant to build the web application archive (war) file, and deploy the war file to a Servlet container such as Tomcat or Jetty. To create a Struts 2 web application with the Struts 2 artifacts added to the the application's class path manually you will need to download the Struts 2 distribution from the Apache Struts website. On the Struts 2 download page, click on the link for the current General Availability release. In that release's section you'll find several links. To get started with a basic Struts 2 web application you need to only download the Essential Dependencies Only zip file, which is approximately 12mb. After downloading this zip file, unzip it. You should have a folder named the same as the current general availability release and in that folder will be a lib folder. The lib folder contains the Struts 2 jar files (e.g. struts2-core-X.X.X.X.jar, where X.X.X.X is the version) and other jar files Struts 2 requires (e.g. xwork-core.X.X.X.jar). As we create our basic Struts 2 web application we will copy from the Struts 2 distribution lib folder just the jar files our application requires. As we add features to our application in future tutorials we will copy other jar files. Step 1 - Create A Basic Java Web Application In your Java IDE create a web application project named Basic_Struts2_Ant. To follow along with this tutorial your web application should have the following folder structure: Remember Struts 2 requires Servlet API 2.4 or higher, JSP 2.0 or higher, and Java 5 or higher. The example project, Basic_Struts2_Ant, which you can download from Google

php表单选择

Php中表单的选择传递问题 单选: 1,文档: 文档: echo $_POST["sex"]; 2,文档: 文档: echo "
你喜欢的水果是:
".$_POST["selects"]; 复选: 文档: 1,php vb vc++ for ($i=0;$i文档 echo $_POST["choose"][$i]." ";} 2,文档:

Struts 2 异常处理的常用的解决方法

一、第一个异常处理 严重: Servlet.service() for servlet jsp threw exception The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location] at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60) at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) at https://www.wendangku.net/doc/6a16616659.html,ponentTagSupport.doStartTag(ComponentTagSupport.java:48) at https://www.wendangku.net/doc/6a16616659.html,_005fstruts2_005flz.YpxxbQuery_jsp._jspx_meth_s_005fdebug_005f0(Ypxxb Query_jsp.java:108) at https://www.wendangku.net/doc/6a16616659.html,_005fstruts2_005flz.YpxxbQuery_jsp._jspService(YpxxbQuery_jsp.java:83) 解决的办法:(4种解决方案) 1. web.xml 中添加一个filter struts2 *.jsp struts2 /action/* 2. struts2 /* 注意这里一定要是/* 3. 这通常是由于不经由Filter访问包含struts标签的jsp页面导致的。那么,只要通过配置,使得对jsp页面的访问请求由Filter过滤转发即可。 方法1:在strut.xml中配置一个通用Action,通过这个Action转发到jsp页面。这个时候,原先访问jsp的请求路径就要换成相应的Action路径了。写法如下。 /{1}.jsp 方法2:在web.xml中配置Filter的url-parttern。写法如下。其中struts2-dispatcher 是已定义的Filter。

()Php表单数据传入数据库与mysql数据库数据发送客户端技术

()Php表单数据传入数据库与mysql数据库数据发送客户端技术

Php表单技术数据传入与传出技术利用表单name属性的值从客户端接收数据值利用get或post方式传递给表单可用$_get[“name属性值”]或$_post[“name属性值”];利用php将插入数据库;继而达到从客户端接收数据建立数据库; 客户端接收文件: 无标题文档

订单提交
订购产品: 测试产品
订购数量:

struts2国际化配置

前提条件:strut2的必须架包已经引入,struts2的配置文件全部配置完成 1.首先创建一个struts.properties在src目录下,服务器启动时候会自动加载该文件,在这个文件中写入struts.custom.i18n.resources=globalMessages,服务器会自动选择前缀为globalMessages资源文件。(或者你在你的struts.xml文件中添加服务器加载struts.xml的时候会加载国际化资源文件); 2.在src目录下创建资源文件英文globalMessages_en.properties 中文globalMessages_zh.properties。globalMessages_en.properties 文件内容为home=home globalMessages_zh.properties文件内容为home=¥u9996¥u9875 3.在页面端获得资源文件信息。<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> My JSP 'test.jsp' starting page struts2的国际化分三种情况 1.前台页面的国际化, 2.Action类中的国际化, 3.配置文件的国际化。 首先指定全局的国际化资源文件: 在配置文件struts.xml中引入 (注意位置)

php简单注册页面代码

php简单注册页面代码 注册页面zhuce.html 申请帐号

用户名: * 密码: * 确认密码: * email:* 性别:男 保密

相关文档 最新文档
姓名:
年龄:
性别:
地址: *为必填项