struts2 action配置动态提交action的问题,形式loginaction!loginpag...

struts2访问不到action有关问题
&来源:读书人网&【读书人网():综合教育门户网站】
struts2访问不到action问题各位好:我在做一个登录页面,使用的框架是ssh集成,struts的版本是2.3.15.3登录页
struts2访问不到action问题各位好:&&&&&&我在做一个登录页面,使用的框架是ssh集成,struts的版本是2.3.15.3&&&&&&登录页面提交报错HTTP&Status&404&-&/*/loginAction.actiontype&Status&reportmessage&/*/loginAction.actiondescription&The&requested&resource&(/*/loginAction.action)&is&not&available.&&&&&&不知道是web.xml配置错了?&&&&&&&还是struts.xml配置错了?&&&&&&还是jsp页面的提交方式,提交地址错了?&&&&&&&&&&&麻烦大家帮忙给分析一下原因!先谢谢给位了!web.xml配置如下:&?xml&version="1.0"&encoding="UTF-8"?&&web-app&version="3.0"&xmlns="/xml/ns/javaee"&xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&xsi:schemaLocation="/xml/ns/javaee&/xml/ns/javaee/web-app_3_0.xsd"&&&&display-name&TSP&/display-name&&filter&&filter-name&LoginFilter&/filter-name&&filter-class&com.bonsoft.oa.filter.LoginFilter&/filter-class&&init-param&&param-name&exclude&/param-name&&param-value&/jsp/zh_CN/login/login.jsp,&/loginAction.action&/param-value&&/init-param&&/filter&&filter-mapping&&filter-name&LoginFilter&/filter-name&&url-pattern&*.jsp&/url-pattern&&/filter-mapping&&filter-mapping&&filter-name&LoginFilter&/filter-name&&url-pattern&/servlet/*&/url-pattern&&/filter-mapping&&filter-mapping&&filter-name&LoginFilter&/filter-name&&url-pattern&*.action&/url-pattern&&/filter-mapping&&filter&&filter-name&characterEncoding&/filter-name&&filter-class&org.springframework.web.filter.CharacterEncodingFilter&/filter-class&&init-param&&param-name&encoding&/param-name&&param-value&UTF-8&/param-value&&/init-param&&init-param&&param-name&forceEncoding&/param-name&&param-value&true&/param-value&&/init-param&&/filter&&filter-mapping&&filter-name&characterEncoding&/filter-name&&url-pattern&/*&/url-pattern&&/filter-mapping&&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&*.action&/url-pattern&&/filter-mapping&&welcome-file-list&&welcome-file&/jsp/zh_CN/login/login.jsp&/welcome-file&&/welcome-file-list&&listener&&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&&/listener&&context-param&&param-name&sessionTimeout&/param-name&&param-value&3000&/param-value&&/context-param&&listener&&listener-class&com.bonsoft.oa.util.session.AppSessionListener&/listener-class&&/listener&&context-param&&param-name&contextConfigLocation&/param-name&&param-value&/WEB-INF/classes/spring/**/*.xml&/param-value&&/context-param&&/web-app&--------------------------------STRUTS的配置文件如下--------------&?xml&version="1.0"&encoding="UTF-8"&?&&!DOCTYPE&struts&PUBLIC"-//Apache&Software&Foundation//DTD&Struts&Configuration&2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"&&struts&&&&&&package&name="web"&extends="struts-default"&&&&&&action&name="loginAction"&class="com.ss.login.action.LoginAction"&&&result&name="success"&/hello.jsp&/result&&/action&&&&&&&&/package&&/struts&----------------------------------LOGIN页面如下:&%@&page&language="java"&import="java.util.*"&pageEncoding="UTF-8"%&&%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&login&/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"&&&&/head&&&&body&
&&&&&form&name="form1"&action="loginAction.action"&method="post"&&&&&&&&table&border="1"&cellspacing="0"&cellpadding="0"&align="center"&&&&&&&&tr&&&&&&&&&&td&&width="150"&align="center"&用户名:&/td&&&&&&&&&&td&&width="150"&align="center"&&input&type="text"&name="userName"&id="userName"&&/td&&&&&&&&/tr&&&&&&&&tr&&&&&&&&&&td&&width="150"&align="center"&密码:&/td&&&&&&&&&&td&&width="150"&align="center"&&input&type="password"&name="loginPwd"&id="loginPwd"&&/td&&&&&&&&/tr&&&&&&&&tr&&&&&&&&&td&colspan="2"&align="right"&&input&type="submit"&value="登录"&&/td&&&&&&&&&&&&/tr&&&&&&/table&&&&/form&&&&&&/body&&/html&
struts2配置问题
action找不到
[解决办法]&&&form&name="form1"&action="loginAction.action"&method="post"&不建议写相对路径的。如果对路径理解不清晰的话,经常出错。[解决办法]action="loginAction.action",action加上你的项目访问路径,如:你项目的访问路径是test,那就改成:/test/loginAction.action,看看你server.xml里面配置的context下的path[解决办法]你Action里面的方法是用的execute()[解决办法]配置没问题,这个错误提示说明loginAction.action&不是被当做一个Action处理的,而是当做路径处理的,和.jsp一样,个人觉得是在过滤器里面出现问题了个人意见1061人阅读
最早使用动态方式调用是在Spring中,没想到Struts2也支持动态方法调用了,真是方便不少啊,呵呵,下面就来说说吧 :-)&&&&&
1.动态方法调用
&&&&&&&Struts2支持动态方法调用,它指的是一个Action中有多个方法,系统根据表单元素给定的action来访问不同的方法,而不用写多个Action。
&&&&&&&使用动态方法调用前必须设置Struts2允许动态方法调用,它是通过设置
struts.enable.DynamicMethodInvocation = true来完成的。
&&&&&&&Struts2有多种方式实现动态方法调用(以下action请求的后缀均设置为do,而非默认的action):
 (1).&修改页面Form的action请求方式
&&&&&&&将页面上action的请求方式改为:action = “ActionName!MethodName.do”,示例:
&&&&&&&Login.jsp
&&&&&&&&&&&&&&……
&&&&&&&&&&&&&&var contextPath = “&%=request.getContextPath()%&”;
&&&&&&&&&&&&&&&script type=”text/javascript”&
&&&&&&&&&&&&&&&&&&&&&function dynamicMethodInvoke(){
&&&&&&&&&&&&&&&&&&&&&&&&&&&&document.forms[0].action = contextPath + “Login!dynamicMethod.do”;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&document.forms[0].submit();
&&&&&&&&&&&&&&&/script&
&&&&&&&&&&&&&&……
&&&&&&&&&&&&&&&input type=”button” value=”动态方法调用” onclick=”dynamoicMethodInvoke()”/&
&&&&&&&&&&&&&&……
&&&&&&&当点击“动态方法调用”按钮时,执行dynamoicMethodInvoke方法,在此方法中修改提交的action为Login!dynamicMethod.do,它的意思是将表单提交给Login
Action的dynamicMethod方法进行处理。
&&&&&&&LoginAction.java
&&&&&&&public class LoginAction {
&&&&&&&……
&&&&&&&public String dynamicMethod() throws Exception{
&&&&&&&&&&&&&&&&&&&&&……
&&&&&&&&&&&&&&return “success”;
public String execute() throws Exception{
&&&&&&&……
&&&&&&&if (…){
&&&&&&&&&&&&&&return “error”;
return “success”
&&&&&&&通过这种方式,可以在一个Action中包含多个方法,通过指定不同的action属性来提交给Action的不同方法进行处理。
&&&&&&&对于使用动态方法调用的方法,它的声明与系统默认的execute方法的方法声明只有方法名不同,其他的如参数、返回值类型都必须相同。
 (2).&指定action的method属性
&&&&&&&另一种动态调用方式是在struts.xml中指定action的method属性,这样可以让Action类调用指定方法,而不是默认的execute方法来处理请求。示例:
&&&&&&&struts.xml
&&&&&&&……
&&&&&&&&package name=”demo1” extends=”struts-default”&
&&&&&&&&&&&&&&&action name=”Login” class=”com.demo.LoginAction” /&
&&&&&&&&&&&&&&&&&&&&&&result name=”input”&/input.jsp&/result&
&&&&&&&&&&&&&&&&&&&&&&result name=”error”&/error.jsp&/result&
&&&&&&&&&&&&&&&&&&&&&&result name=”success”&/success.jsp&/result&
&&&&&&&&&&&&&&&/action&
&&&&&&&&&&&&&&&action name=”Registry” class=”com.demo.LoginAction”&method=”registry”&/&
&&&&&&&&&&&&&&&&&&&&&&result name=”input”&/input.jsp&/result&
&&&&&&&&&&&&&&&&&&&&&&result name=”error”&/error.jsp&/result&
&&&&&&&&&&&&&&&&&&&&&&result name=”success”&/success.jsp&/result&
&&&&&&&&&&&&&&&/action&
&&&&&&&&/package&
&&&&&&&上述配置中两个action的实现类均为com.demo.LoginAction,他们的实现类虽然相同,但处理逻辑却不同,处理逻辑通过method方法指定,其中名为Login的Action对应的处理逻辑为默认的execute方法,而名为Registry的Action对应的处理逻辑则为method指定的registry方法。
 (3).&使用通配符
&&&&&&&仔细看上面struts.xml中两个action的定义,可以发现他们除了name和method属性不同以外,其余的都一样,这种定义相当的冗余,为了解决这种类型的问题,Struts2提供了通配符定义方式。
&&&&&&&在配置&action/&元素时,需要指定name、class、method等属性,这3个属性都支持通配符,在使用通配符定义Action的name属性时,相当于一个元素action定义多个逻辑Action。(2)中的action配置可以更改为:
&package name=”demo” extends=”struts-default”&
&&&&&&&&action name=”*Action” class=”com.demo.LoginAction” method=”{1}”&
&&&&&&&&&&&&&&&result name=”input”&/input.jsp&/result&
&&&&&&&&&&&&&&&result name=”error”&/error.jsp&/result&
&&&&&&&&&&&&&&&result name=”success”&/success.jsp&/result&
&&&&&&&&/action&
&/package&
上述定义不是定义了一个普通的action,而是定义一系列的action,只要用户请求的URL满足*Action.do的模式,都可通过该Action进行处理,而method属性使用了一个表达式{1},该表达式的值就是name属性中第一个*的值,例如,用户请求的URL为LoginAction.do,则调用com.demo.LoginAction类的Login方法来处理,如果请示的URL为RegistryAction.do的话,则调用com.demo.LoginAction的Registry方法进行处理。
以下配置在class属性中使用通配符:
&package name=”demo” extends=”struts-default”&
&&&&&&&&action name=”*Action” class=”com.demo.{1}Action”&
&&&&&&&&&&&&&&&result name=”input”&/input.jsp&/result&
&&&&&&&&&&&&&&&result name=”error”&/error.jsp&/result&
&&&&&&&&&&&&&&&result name=”success”&/success.jsp&/result&
&&&&&&&&/action&
&/package&
&&&&&&&此配置中没有指定method属性,所以请示由默认的execute方式来执行,但class中使用了通配符,它的含义与上面一样,例如,当用户请求的为LoginAction.do时,其中*的值为Login,该值传入class属性,即该Action的处理类为com.demo.LoginAction;而如果请求为RegistryAction.do时,则该Action的处理类将变为com.demo.RegistryAction。
&&&&&&&Struts2允许在class属性和method属性中同时使用表达式,示例如下:
&action name=”*_*” class=”com.demo.{1} method=”{2}” /&
不难看出,只要满足*_*模式的Action都会被其处理,例如有Order_Booking.do请求到来,由于第一个*的值为Order,第二个*的值为Booking,那么意味着将会调用com.demo.Order处理类中的Booking方法来处理用户请求。
&&&&&&&Struts2除了允许在name、class、method中使用表达式外,在&result/&元素中也可以使用表达式,如下:
&&&&&&&&action name=”*Action” class=”com.demo.{1}Action method=”{1}” &
&&&&&&&&&&&&&&&result name=”success”&/{1}.jsp&/result&
&&&&&&&&/action&
&&&&&&&当请求为LoginAction.do时,将调用com.demo.LoginAction处理类中的Login方法处理用户的请求,当返回为success时,显示/Login.jsp页面。
&&&&&&&注意:在使用通配符后,除非请求的URL与Action的name属性绝对相同,否则将按Action在struts.xml中定义的先后顺序来决定由哪个Action来处理用户请求。
&&&&&&&对于一些只是简单的转发操作,如超级链接等的请求,可以定义name为*的Action来处理,此外,Struts2框架允许在struts.xml中使用&default-action-ref/&元素定义一个默认Action来处理用户请求:
&&&&&&&&package name=”demo” extends=”struts-default” namespace=”/”&
&&&&&&&&&&&&&&&action name=”defaultAction” class=”com.demo.DefaultAction”&
&&&&&&&&&&&&&&&&&&&&&&result&/default.jsp&/action&
&default-action-ref name=”defaultAction” /&
&&&&&&&&/package&
&default-action-ref/&的name属性为struts.xml中一个已经定义好的Action。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:18345次
排名:千里之外
转载:10篇
(1)(2)(4)(2)(1)(1)(3)(2)(1)Struts2一个Action内包孕多个请求处理方法(三种方式)_个人小结_嘿牛软件工程师_成都传智博客_javascript的注册表单验证、提交有关问题__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
Struts2一个Action内包孕多个请求处理方法(三种方式)
嘿牛软件工程师_成都传智博客_javascript的注册表单验证、提交有关问题
Struts2一个Action内包孕多个请求处理方法(三种方式)
Struts2一个Action内包含多个请求处理方法(三种方式)
Struts2一个Action内包含多个请求处理方法的处理(三种方式)Struts1提供了DispatchAction,从而允许一个Action内包含多个请求处理方法。Struts2也提供了类似的功能。处理方式主要有以下三种方式:1.1. 动态方法调用:DMI:Dynamic Method Invocation 动态方法调用。动态方法调用是指:表单元素的action不直接等于某个Action的名字,而是以如下形式来指定对应的动作名:&form method="post" action="userOpt!login.action"&则用户的请求将提交到名为”userOpt”的Action实例,Action实例将调用名为”login”方法来处理请求。同时login方法的签名也是跟execute()一样,即为public String login() throws Exception。注意:要使用动态方法调用,必须设置Struts2允许动态方法调用,通过设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。1.1.1.
示例:修改用户登录验证示例,多增加一个注册用户功能。1.
修改Action类:package org.qiujy.web.struts2.import com.opensymphony.xwork2.ActionCimport com.opensymphony.xwork2.ActionS/***@authorqiujy*@version1.0*/publicclass LoginAction extends ActionSupport{private String userNprivate Sprivate S //结果信息属性/**
*@returnthemsg
*/public String getMsg() {}/**
*@parammsgthemsgtoset
*/publicvoid setMsg(String msg) {
this.msg =}/**
*@returntheuserName
*/public String getUserName() {
returnuserN}/**
*@paramuserNametheuserNametoset
*/publicvoid setUserName(String userName) {
this.userName = userN}/**
*@returnthepassword
*/public String getPassword() { }/**
*@parampasswordthepasswordtoset
*/publicvoid setPassword(String password) {
this.password =}/**
*处理用户请求的login()方法
*@return结果导航字符串
*@throwsException
*/public String login() throws Exception{
if("test".equals(this.userName) && "test".equals(this.password)){
msg = "登录成功,欢迎" + this.userN
//获取ActionContext实例,通过它来访问Servlet API
ActionContext context = ActionContext.getContext();
//看session中是否已经存放了用户名,如果存放了:说明已经登录了;//否则说明是第一次登录成功
if(null != context.getSession().get("uName")){
msg = this.userName + ":你已经登录过了!!!";
context.getSession().put("uName", this.userName);
returnthis.SUCCESS;
msg = "登录失败,用户名或密码错";
returnthis.ERROR;
}}public String regist() throws Exception{
//将用户名,密码添加到数据库中
msg = "注册成功。";
returnthis.SUCCESS;}}2.
struts.xml文件:没有什么变化,跟以前一样配置&!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"&&struts&&package name="my" extends="struts-default" namespace="/manage"&&!-- 定义处理请求URL为login.action的Action --&
&action name="userOpt" class="org.qiujy.web.struts2.action.LoginAction"&
&!-- 定义处理结果字符串和资源之间的映射关系 --&
&result name="success"&/success.jsp&/result&
&result name="error"&/error.jsp&/result&
&/action&&/package&&/struts&3.
页面:index.jsp&%@ page language="java" pageEncoding="UTF-8"%&&html&&head&&title&用户登录页面&/title&&/head&&body&
&h2&用户入口&/h2&
&hr&&form action="manage/userOpt!login.action" method="post"&&table border="1"&
&td&用户名:&/td&
&td&&input type="text" name="userName"/&&/td&
&td&密码:&/td&
&td&&input type="password" name="password"/&&/td&
&td colspan="2"&
&input type="submit" value=" 确定 "/&
&/tr&&/table&&/form&&/body&&/html&regist.jsp&%@ page language="java" pageEncoding="UTF-8"%&&html&&head&&title&用户注册页面&/title&&/head&&body&
&h2&用户注册&/h2&
&hr&&form action="manage/userOpt!regist.action" method="post"&&table border="1"&
&td&用户名:&/td&
&td&&input type="text" name="userName"/&&/td&
&td&密码:&/td&
&td&&input type="password" name="password"/&&/td&
&td colspan="2"&
&input type="submit" value=" 注册 "/&
&/tr&&/table&&/form&&/body&&/html&1.2. 为Action配置method属性:将Action类中的每一个处理方法都定义成一个逻辑Action方法。&!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"&&struts&&package name="my" extends="struts-default" namespace="/manage"&
&action name="userLogin" class="org.qiujy.web.struts2.action.LoginAction" method="login"&
&result name="success"&/success.jsp&/result&
&result name="error"&/error.jsp&/result&
&action name="userRegist" class="org.qiujy.web.struts2.action.LoginAction" method="regist"&
&result name="success"&/success.jsp&/result&
&result name="error"&/error.jsp&/result&
&/action&&/package&&/struts&如上,把LoginAction中的login和regist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置为"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action设置为"manage/userRegist.action"。1.3. 使用通配符映射(wildcard mappings)方式:在struts.xml文件中配置&action…&元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:&action name="user_*"class="org.qiujy.web.struts2.action.UserAction" method="{1}"&
&result name="success"&/success.jsp&/result&
&result name="error"&/error.jsp&/result&
&/action&如上,&action name=”user_*”&定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。========================Struts 2 动态方法调用1.在jsp中如何得到Action的属性:
(1).${requestScope.tip}
(2).ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
vs.findValue("tip")2.动态方法调用
动态方法调用是指,表单元素的action并不是直接等于某个Action的名字,而是以action='ActionName!methodName.action'来指定Form的属性.
Action里可以包含一个execute()方法和多个其它逻辑.3.为action元素指定method属性
即是将一个Action处理类定义成多个逻辑Action,指定action的method属性,则可以让action类来调用不同的方法.
特点是只有一个action类,action类里有几个处理逻辑struts.xml里就包含着几个&action... /&片断.也就是Action类的每个处理方法被映射成一个逻辑Action.
缺点是多个action里定义的方法绝大部分相同,这种定义是相当冗余的.4.使用通配符
在配置&action .../&元素时,需要指定name,class,method属性都可支持通配符,这种使用通配符的方式是另一种形式的动态方法调用.
当我们使用通配符定义Action的name属性时,就相当于一个元素action定义了多个逻辑Action.
(1).&action name="*Action" class="lee.loginRegistAction" method="{1}"&....&/action&
只要URL是*Action.action的模式,都可以能过该Action类处理.
但该method属性使用了一个表达式{0},该表达式的值就是name属性值中的第一个*的值.
(2).&action name="*Action" class="lee.{1}Action"&....&/action&
只要URL是*Action.action的模式,都能通过相应的ation类处理.
如:URL为registAction.action,则调用lee.registAction类的excute方法来处理
个人总结1,增加事件和函数
$("#backgroundUl").children("li").attr("onmouseover","showSubCategory(event,this);");
$("#backgroundUl").children("li[id != flag2 ]").removeAttr("onmouseout");
3, 用500毫秒将段落移到left为50的地方并且完全清晰显示出来(透明度为1)
$("p").animate({
left: 50, opacity: 'show'
4,css的设置
取得第一个段落的color样式属性的值。
jQuery 代码:
$("p").css("color");
将所有段落字体设为红色
jQuery 代码:
$("p").css("color","red");
---常用的遍历节点方法:1、 取得匹配元素的所有子元素组成的集合: children(). 该方法只考虑子元素而不考虑任何后代元素.2、 取得匹配元素后面紧邻的同辈元素的集合(但集合中只有一个元素): next()3、 取得匹配元素前面紧邻的同辈元素的集合(但集合中只有一个元素): prev()4、 取得匹配元素前后所有的同辈元素: siblings()//遍历checked 方法一//遍历集合 该方法可以由元素调用$("input:checked").each(function(){alert($(this).val());});//遍历checked 方法二 //通用例遍方法,可用于例遍对象和数组var $checks= $("input:checked");$.each($checks,function(){alert($(this).val());});//遍历checked 方法三 //此方法中函数可以增加两个参数 第一个参数表示索引,第二参数表示对当前遍历的对象的引用var $checks= $("input:checked");
$.each($checks,function(index,data){alert(index+"
"+$(data).val());});
--用button替换p$("p").replaceWith($("button"))或$("button").replaceAll($("p"))
--创建元素节点&li&&/li&var $li=$("&li&&/li&");--添加ul节点元素的尾部$("#city").append($li);或$li.appendTo($("#city"));--添加ul节点元素的前端$("#city").prepend($li);或 $li.prependTo($("#city"));--方法after(cotent),before(content)把匹配的content元素插入到调用方法的元素后或前$("#bj").after($li); $("#bj").before($li);--方法insertAfter(content),insertBefore(content)把调用方法的元素插入到匹配的content后或前$("#bj").insertAfter($("#cq")); $("#bj").insertBefore($("#cq"));--删除元素节点,连元素属性也删除$("#city").remove();此时alert($("#city").attr("id"));值为空,子元素和本元素都删除--清空元素节点,元素子节点删除但自己的属性保存$("#city").empty(); 此时alert($("#city").attr("id"));值为city,但子元素全删除
//遍历checked 方法四//此方法中函数可以增加两个参数 第一个参数表示索引,第二参数表示对当前遍历的对象的引用$("input:checked").each(function(index,data){alert(index+"
"+$(data).val());});
---基本选择器:是 jQuery 中最常用的选择器, 也是最简单的选择器, 它通过元素 id, class 和标签名来查找 DOM 元素(在网页中 id 只能使用一次, class 允许重复使用).1、#id
用法: $(”#myDiv”);
返回值 单个元素的组成的集合说明: 这个就是直接选择html中的id=”myDiv”2、Element
用法: $(”div”)
返回值 集合元素说明: element的英文翻译过来是”元素”,所以element其实就是html已经定义的标签元素,例如 div, input, a 等等.3、class
用法: $(”.myClass”)
返回值 集合元素说明: 这个标签是直接选择html代码中class=”myClass”的元素或元素组(因为在同一html页面中class是可以存在多个同样值的).4、*
用法: $(”*”)
返回值 集合元素说明: 匹配所有元素,多用于结合上下文来搜索5、selector1, selector2, selectorN
用法: $(”div,span,p.myClass”)
返回值 集合元素说明: 将每一个选择器匹配到的元素合并后一起返回.你可以指定任意多个选择器, 并将匹配到的元素合并到一个结果内.其中p.myClass是表示匹配元素 p class=”myClass”---层次选择器:DOM 元素之间的层次关系来获取特定元素, 例如后代元素, 子元素, 相邻元素, 兄弟元素等, 1 、ancestor descendant用法: $(”form input”) ;
返回值 集合元素说明: 在给定的祖先元素下匹配所有后代元素.这个要下面讲的”parent & child”区分开.2、parent & child 用法: $(”form & input”) ;
返回值 集合元素说明: 在给定的父元素下匹配所有子元素.注意:要区分好后代元素与子元素3、prev + next用法: $(”label + input”) ;
返回值 集合元素说明: 匹配所有紧接在 prev 元素后的 next 元素4、prev ~ siblings用法: $(”form ~ input”) ;
返回值 集合元素说明: 匹配 prev 元素之后的所有 siblings 元素.注意:是匹配之后的元素,不包含该元素在内,并且siblings匹配的是和prev同辈的元素,其后辈元素不被匹配.注意: (“prev ~ div”) 选择器只能选择 “# prev ” 元素后面的同辈元素; 而 jQuery 中的方法 siblings() 与前后位置无关, 只要是同辈节点就可以选取eg://改变 id 为 two 的元素后面的所有兄弟&div&的元素的背景色$("#two~div").css("background","red")//改变 id 为 two 的元素所有 &div& 兄弟元素的背景色$("#two").siblings("div").css("background","red")
---基础过滤选择器:1、:first 用法: $(”tr:first”) ;
返回值 单个元素的组成的集合说明: 匹配找到的第一个元素2、:last 用法: $(”tr:last”)
返回值 集合元素说明: 匹配找到的最后一个元素.与 :first 相对应.3、:not(selector) 用法: $(”input:not(:checked)”)返回值 集合元素说明: 去除所有与给定选择器匹配的元素.有点类似于”非”,意思是没有被选中的input(当input的type=”checkbox”).4、:even 用法: $(”tr:even”)
返回值 集合元素说明: 匹配所有索引值为偶数的元素,从 0 开始计数.js的数组都是从0开始计数的.例如要选择table中的行,因为是从0开始计数,所以table中的第一个tr就为偶数0.5、: odd 用法: $(”tr:odd”) 返回值 集合元素说明: 匹配所有索引值为奇数的元素,和:even对应,从 0 开始计数.6、:eq(index) 用法: $(”tr:eq(0)”)
返回值 集合元素说明: 匹配一个给定索引值的元素.eq(0)就是获取第一个tr元素.括号里面的是索引值,不是元素排列数.7、:gt(index) 用法: $(”tr:gt(0)”)
返回值 集合元素说明: 匹配所有大于给定索引值的元素.8、:lt(index) 用法: $(”tr:lt(2)”)
返回值 集合元素 说明: 匹配所有小于给定索引值的元素.9、:header 用法: $(”:header”).css(”background”, “#EEE”)
返回值 集合元素说明: 匹配如 h1, h2, h3之类的标题元素.这个是专门用来获取h1,h2这样的标题元素.10、:animated
返回值 集合元素说明: 匹配所有正在执行动画效果的元素 ---内容过滤选择器:过滤规则主要体现在它所包含的子元素和文本内容上1、:contains(text) 用法: $(”div:contains(’John’)”)
$("div:not(:contains('di'))") 返回值 集合元素说明: 匹配包含给定文本的元素.这个选择器比较有用,当我们要选择的不是dom标签元素时,它就派上了用场了,它的作用是查找被标签”围”起来的文本内容是否符合指定的内容的.2、:empty 用法: $(”td:empty”)
返回值 集合元素说明: 匹配所有不包含子元素或者文本的空元素3、:has(selector)用法: $(”div:has(p)”).addClass(”test”)
返回值 集合元素说明: 匹配含有选择器所匹配的元素的元素.这个解释需要好好琢磨,但是一旦看了使用的例子就完全清楚了:给所有包含p元素的div标签加上class=”test”.4、:parent 用法: $(”td:parent”)
返回值 集合元素说明: 匹配含有子元素或者文本的元素.注意:这里是”:parent”,可不是”.parent”感觉与上面讲的”:empty”形成反义词.
---可见度过滤选择器:根据元素的可见和不可见状态来选择相应的元素1、:hidden 用法: $(”tr:hidden”) 返回值 集合元素说明: 匹配所有的不可见元素,input 元素的 type 属性为 “hidden” 的话也会被匹配到.意思是css中display:none和input type=”hidden”的都会被匹配到.同样,要在脑海中彻底分清楚冒号”:”, 点号”.”和逗号”,”的区别.2、:visible 用法: $(”tr:visible”) 返回值 集合元素说明: 匹配所有的可见元素.---属性过滤选择器:通过元素的属性来获取相应的元素1、[attribute] 用法: $(”div[id]“) ; 返回值 集合元素说明: 匹配包含给定属性的元素. 例子中是选取了所有带”id”属性的div标签.2、[attribute=value] 用法: $(”input[name='newsletter']“).attr(”checked”, true);
返回值 集合元素说明: 匹配给定的属性是某个特定值的元素.例子中选取了所有 name 属性是 newsletter 的 input 元素.3、[attribute!=value] 用法: $(”input[name!='newsletter']“).attr(”checked”, true);
返回值 集合元素说明: 匹配所有不含有指定的属性,或者属性不等于特定值的元素.此选择器等价于:not([attr=value]),要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value]).之前看到的 :not 派上了用场.4、[attribute^=value] 用法: $(”input[name^=‘news’]“) 返回值 集合元素 说明: 匹配给定的属性是以某些值开始的元素.嗯,我们又见到了这几个类似于正则匹配的符号.现在想忘都忘不掉了吧?!5、[attribute$=value] 用法: $(”input[name$=‘letter’]“) 返回值 集合元素 说明: 匹配给定的属性是以某些值结尾的元素.6、[attribute*=value] 用法: $(”input[name*=‘man’]“)
返回值 集合元素说明: 匹配给定的属性是以包含某些值的元素.7、[attributeFilter1][attributeFilter2][attributeFilterN] 用法: $(”input[id][name$=‘man’]“) 返回值 集合元素说明: 复合属性选择器,需要同时满足多个条件时使用.又是一个组合,这种情况实际使用的时候很常用.这个例子中选择的是所有含有 id 属性,并且它的 name 属性是以 man 结尾的元素.---子元素过滤选择器:1、:nth-child(index/even/odd/equation) 用法: $(”ul li:nth-child(2)”)
返回值 集合元素说明: 匹配其父元素下的第N个子或奇偶元素.这个选择器和之前说的基础过滤(Basic Filters)中的 eq() 有些类似,不同的地方就是前者是从0开始,后者是从1开始.2、:first-child 用法: $(”ul li:first-child”)
返回值 集合元素 说明: 匹配第一个子元素.’:first’ 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素.这里需要特别点的记忆下区别.3、:last-child 用法: $(”ul li:last-child”)
返回值 集合元素说明: 匹配最后一个子元素.’:last’只匹配一个元素,而此选择符将为每个父元素匹配一个子元素.4、: only-child 用法: $(”ul li:only-child”)
返回值 集合元素 说明: 如果某个元素是父元素中唯一的子元素,那将会被匹配.如果父元素中含有其他元素,那将不会被匹配.意思就是:只有一个子元素的才会被匹配!---表单对象属性过滤选择器:主要对所选择的表单元素进行过滤1、:enabled 用法: $(”input:enabled”)
返回值 集合元素说明: 匹配所有可用元素.意思是查找所有input中不带有disabled=”disabled”的input.不为disabled,当然就为enabled啦.2、:disabled 用法: $(”input:disabled”)
返回值 集合元素说明: 匹配所有不可用元素.与上面的那个是相对应的.3、:checked 用法: $(”input:checked”)
返回值 集合元素说明: 匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option).这话说起来有些绕口.4、:selected 用法: $(”select option:selected”)
返回值 集合元素说明: 匹配所有选中的option元素.---表单选择器:1、:input 用法: $(”:input”) ;
返回值 集合元素说明:匹配所有 input, textarea, select 和 button 元素 2、:text 用法: $(”:text”) ; 返回值 集合元素说明: 匹配所有的单行文本框.3、:password 用法: $(”:password”) ; 返回值 集合元素说明: 匹配所有密码框.4、:radio 用法: $(”:radio”) ; 返回值 集合元素说明: 匹配所有单选按钮.5、:checkbox 用法: $(”:checkbox”) ; 返回值 集合元素说明: 匹配所有复选框6、:submit 用法: $(”:submit”) ;
返回值 集合元素说明: 匹配所有提交按钮.7、:image 用法: $(”:image”)
返回值 集合元素说明: 匹配所有图像域.8、:reset 用法: $(”:reset”) ; 返回值 集合元素说明: 匹配所有重置按钮.9、:button 用法: $(”:button”) ; 返回值 集合元素说明: 匹配所有按钮.这个包括直接写的元素button.10、:file 用法: $(”:file”) ; 返回值 集合元素说明: 匹配所有文件域.11、:hidden 用法: $(”input:hidden”) ; 返回值 集合元素
嘿牛软件工程师_成都传智博客_javascript的注册表单验证、提交有关问题
嘿牛程序员__成都传智博客__javascript的注册表单验证、提交问题---------------------- android培训、java培训、期待与您交流! ----------------------
本节讨论javascript的注册表单问题
注册表单用的比较多。应用时,主要涉及到信息的输入,关键是信息的验证。下面主要以一个学员注册的注册表单为例,主要涉及到字段的编写、信息的验证。
信息的验证主要是引用javascript的程序。为了实现程序的效率,方便以后修改,我们将javascript代码全部放在一个validation1.js文件里。访问它时,我们用了相对地址的引用。即src = "validation1.js"或在当前目录下的某个文件src = "js/validation1.js"。
信息提交时,本程序实现了:如果有一个必填信息没有填正确,就不能提交。而原填写的正确信息仍然保留,直到全部填写正确为止。用到的方法为:window.event.returnValue = false,阻止浏览器提交表单数据(因为一旦提交,原来的数据全部为空)。//具体实现如下
//html实现:
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml" &
&title&学员注册&/title&
&script type = "text/javascript" src = "validation1.js"&&/script&&!--src = "js/validation1.js"& --&
&form name="注册表单(*为必填信息)"&
&table border=3&
&!-- 合并行:rowspan;
合并列:colspan
对齐 align
&tr bgcolor="#C0FFFF"&
&td colspan=2&&label id="lbl" &注册表单(*为必填信息)&/label&&/td&
&td align=right style="width:150px"&&label id="lblName" &登录名&/label&&/td&
&td&&input type=text value="" style="width:200px" id="name" /&(用户名必须是字母数字或下划线,不能以数字开头)*&/input&&/td&
&td align=right style="width:150px"&&label id="Label1" &密码&/label&&/td&
&td&&input type=password value="" style="width:150px" id="pwd1"/&(密码必须是6~16位字母数字下划线)*&/input&&/td&
&td align=right style="width:150px"&&label id="Label2"&确认密码&/label&&/td&
&td&&input type=password value="" style="width:150px" id="pwd2"/&*&/input&&/td&
&td align=right style="width:150px"&&label id="Label3" &邮件地址&/label&&/td&
&td&&input type=text value="" style="width:300px" id="Text1" /&&/input&&/td&
&td align=right style="width:150px"&&label id="Label4" &确认邮件地址&/label&&/td&
&td&&input type=text value="" style="width:300px" id="Text2" /&&/input&&/td&
&td align=right style="width:150px"&&label id="Label5"&性别&/label&&/td&
&input type=radio name="sex" checked=true /&男&/input&
&input type=radio name="sex"
/&女&/input&
&td align=right style="width:150px"&城市&/td&
&td&&select&
&option&城市&/option&
&option selected&西安&/option&
&option&东京&/option&
&option&名
古屋&/option&
&td align=right style="width:150px"&兴趣爱好&/td&
&input type=checkbox name="ck" value="1" /&旅游&/input&
&input type=checkbox name="ck" value="2"
/&运动&/input&
&input type=checkbox name="ck" value="3" /&看书&/input&
&input type=checkbox name="ck" value="4" /&跑步&/input&
&input type=checkbox name="checkbox1" id="ckall" onclick="checkEvent('ck','ckall')" /&全选&/input&
&td align=right style="width:150px"&&label id="lblmark"&个人简历&/label&&/td&
&td&&textarea cols="60" rows="5" id="mark"&请输入120个字符以内&/textarea&&/td& &!--
style="width:300height:overflow:auto"--&
&tr align=center&
&td colspan=2&
&input type=submit value="提交" style="width:60px" onclick = "checkInformation();" /&&/input& &!--onclick = "checkUserName
();checkPassword();confirmPassword();"--&
&input type=reset value="重填" style="width:60px" /&&/input&
//javascript文件:validation1.js
//javascript实现:
/ JScript source code
//用户名必须是字母数字或下划线,不能以数字开头
//密码必须是6~16位字母数字下划线
//确认密码:必须和密码一致
function checkInformation() {
var regex = /^[^0-9][a-zA-Z0-9_]{1,}$/;
var s = document.getElementById("name");
if (!s.value.match(regex)) {
alert("用户名错误");
s.value = "";
s.focus();
window.event.returnValue =
var regex1 = /^[a-zA-Z0-9_]{6,16}$/;
var p = document.getElementById("pwd1");
if (!p.value.match(regex1)) {
alert("密码错误");
p.value = "";
p.focus();
window.event.returnValue =
var m = document.getElementById("pwd1");
var n = document.getElementById("pwd2");
if (m.value != n.value){
alert("密码不一致");
n.value = "";
n.focus();
window.event.returnValue =
alert("两次密码输入一致");
function checkEvent(name, allCheckId) {
var allCk = document.getElementById(allCheckId);
//var allCk = document.getElementByName(allCheckId);
// if (allCk[0].checked == true)
if (allCk.checked == true)
checkAllName(name);
checkAllNo(name);
function checkAllName(name) {
var names = document.getElementsByName(name);
var len = names.
if (len & 0) {
var i = 0;
for (i = 0; i & i++)
names[i].checked =
function checkAllNo(name) {
var names = document.getElementsByName(name);
var len = names.
if (len & 0) {
var i = 0;
for (i = 0; i & i++)
names[i].checked =
//实现截图如下:
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 struts2 action配置 的文章

 

随机推荐