我用jquery1.7+struts2.2.1做一个注册例子学习jquery AJAX,代码如下web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>struts.xml主要代码:<struts> <constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<action name="register" class="com.test.action.RegisterAction">
<result>/register.jsp</result>
</action>
</package> </struts>register.jsp主要代码:
<script type="text/javascript" src="<%=request.getContextPath() %>/jquery/jquery-1.7.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/register.js"></script>
<form name="form1" method="post" action="">
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="3"><div align="center">用户注册</div></td>
</tr>
<tr>
<td width="30%">用户名:</td>
<td width="25%"><label>
<input name="user.userName" type="text" id="userName">
</label></td>
<td width="45%"><span id="userNameMessage"></span> </td>
</tr>
</table>
</form>RegisterAction.java :import com.test.model.User;public class RegisterAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -3045347470138967207L;
User user;
public String execute(){
//System.out.println(user.getUserName());
System.out.println("excute....");
return SUCCESS;
}
public String validateUser(){
System.out.println("validateUser....");
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
register.js代码:$(document).ready(function() {
$("#userName").blur(function(){
if($("#userName").val()==""){
$("#userNameMessage").html("请输入用户名!")
$("#userName").focus();
}else{
$.post("register",{userName:$("#userName").val()},function(result){
$("#userNameMessage").html(result);
});
}
});
});遇到的问题:
$.post("register",{userName:$("#userName").val()},function(result){
$("#userNameMessage").html(result);
});
URL只能这样写register访问到RegisterAction的execute方法,写成register!validateUser执行不到validateUser方法。在网上别人说写成:register!validateUser.action我试了也不行,报错找不到action 求高手指点什么原因,到底应该怎么写?
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>struts.xml主要代码:<struts> <constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<action name="register" class="com.test.action.RegisterAction">
<result>/register.jsp</result>
</action>
</package> </struts>register.jsp主要代码:
<script type="text/javascript" src="<%=request.getContextPath() %>/jquery/jquery-1.7.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/register.js"></script>
<form name="form1" method="post" action="">
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="3"><div align="center">用户注册</div></td>
</tr>
<tr>
<td width="30%">用户名:</td>
<td width="25%"><label>
<input name="user.userName" type="text" id="userName">
</label></td>
<td width="45%"><span id="userNameMessage"></span> </td>
</tr>
</table>
</form>RegisterAction.java :import com.test.model.User;public class RegisterAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -3045347470138967207L;
User user;
public String execute(){
//System.out.println(user.getUserName());
System.out.println("excute....");
return SUCCESS;
}
public String validateUser(){
System.out.println("validateUser....");
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
register.js代码:$(document).ready(function() {
$("#userName").blur(function(){
if($("#userName").val()==""){
$("#userNameMessage").html("请输入用户名!")
$("#userName").focus();
}else{
$.post("register",{userName:$("#userName").val()},function(result){
$("#userNameMessage").html(result);
});
}
});
});遇到的问题:
$.post("register",{userName:$("#userName").val()},function(result){
$("#userNameMessage").html(result);
});
URL只能这样写register访问到RegisterAction的execute方法,写成register!validateUser执行不到validateUser方法。在网上别人说写成:register!validateUser.action我试了也不行,报错找不到action 求高手指点什么原因,到底应该怎么写?
解决方案 »
- java web报表什么最好用
- 提几个简单的j2ee环境问题,送分题
- !!传输协议,soa,owl-s问题!!
- 问个很弱智的问题?JSP是不是真的不能用?
- 哪些jquery文件上传插件比较好用??谢了
- 有关javaMail的问题
- 为什么是这个结果呢?
- 谁有用STRUTS做的小型购物车呀?
- 怎样才能让我的SESSIONBEAN访问SQLSERVER数据库?我下载了JDBC FOR SQLSERVER 是几个JAR文件,他们怎么用?
- 求:《java开发指南-应用xml和jsp开发电子商务》一书的原码,不胜感激
- Spring与Hibernate整合getHibernateTemplate().delete(object)删除不了数据
- 求高手帮忙写个正则表达式-----在线等
<struts><constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default">
<action name="register_*" class="com.test.action.RegisterAction" method="{1}">
<result>/register.jsp</result>
</action>
</package> </struts>之后
$.post("register_validateUser",{............
struts.xml主要代码:<struts><constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default">
<action name="register" class="com.test.action.RegisterAction">
<result>/register.jsp</result>
</action>
</package></struts>
改为:<action name="register" class="com.test.action.RegisterAction" method="validateUser">
jsp页面直接访问register就能访问到validateUser()方法了