1.客户端网页代码

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
  5. <title>检测用户名是否唯一</title>
  6. <script language="javascript">
  7. function createRequest(url) {
  8. http_request = false;
  9. if (window.XMLHttpRequest) { // 非IE浏览器
  10. http_request = new XMLHttpRequest(); //创建XMLHttpRequest对象
  11. } else if (window.ActiveXObject) { // IE浏览器
  12. try {
  13. http_request = new ActiveXObject("Msxml2.XMLHTTP"); //创建XMLHttpRequest对象
  14. } catch (e) {
  15. try {
  16. http_request = new ActiveXObject("Microsoft.XMLHTTP"); //创建XMLHttpRequest对象
  17. } catch (e) {
  18. }
  19. }
  20. }
  21. if (!http_request) {
  22. alert("不能创建XMLHttpRequest对象实例!");
  23. return false;
  24. }
  25. http_request.onreadystatechange = getResult; //调用返回结果处理函数
  26. http_request.open('GET', url, true); //创建与服务器的连接
  27. http_request.send(null); //向服务器发送请求
  28. }
  29. function getResult() {
  30. if (http_request.readyState == 4) { // 判断请求状态
  31. if (http_request.status == 200) { // 请求成功,开始处理返回结果
  32. document.getElementById("toolTip").innerHTML = http_request.responseText; //设置提示内容
  33. document.getElementById("toolTip").style.display = "block"; //显示提示框
  34. } else { // 请求页面有错误
  35. alert("您所请求的页面有错误!");
  36. }
  37. }
  38. }
  39. function checkUser(userName) {
  40. if (userName.value == "") {
  41. alert("请输入用户名!");
  42. userName.focus();
  43. return;
  44. } else {
  45. //createRequest('http://10.65.9.181:8090/ajax/checkUser.jsp?user='+userName.value);
  46. createRequest('http://10.65.9.181:8090/ajax/checkUser.action?user='
  47. + userName.value);
  48. }
  49. }
  50. </script>
  51. <style type="text/css">
  52. <!--
  53. #toolTip {
  54. position: absolute;
  55. left: 331px;
  56. top: 39px;
  57. width: 98px;
  58. height: 48px;
  59. padding-top: 45px;
  60. padding-left: 25px;
  61. padding-right: 25px;
  62. z-index: 1;
  63. display: none;
  64. color: red;
  65. background-image: url(images/tooltip.jpg);
  66. }
  67. -->
  68. </style>
  69. </head>
  70. <body style="margin: 0px;">
  71. <form method="post" action="" name="form1">
  72.  
  73. <table width="509" height="352" border="0" align="center"
  74. cellpadding="0" cellspacing="0" background="images/bg.gif">
  75. <tr>
  76. <td height="54"> </td>
  77. </tr>
  78. <tr>
  79. <td height="253" valign="top">
  80. <div style="position: absolute;">
  81.  
  82. <table width="100%" height="250" border="0" cellpadding="0"
  83. cellspacing="0">
  84. <tr>
  85. <td width="18%" height="54" align="right" style="color: #8e6723"><b>用户名:</b></td>
  86. <td width="49%"><input name="username" type="text"
  87. id="username" size="32"></td>
  88. <td width="33%"><img src="data:images/checkBt.jpg" width="104"
  89. height="23" style="cursor: hand;"
  90. onClick="checkUser(form1.username);"></td>
  91. </tr>
  92. <tr>
  93. <td height="51" align="right" style="color: #8e6723"><b>密码:</b></td>
  94. <td><input name="pwd1" type="password" id="pwd1" size="35"></td>
  95. <td rowspan="2"> 
  96. <div id="toolTip"></div>
  97. </td>
  98. </tr>
  99. <tr>
  100. <td height="56" align="right" style="color: #8e6723"><b>确认密码:</b></td>
  101. <td><input name="pwd2" type="password" id="pwd2" size="35"></td>
  102. </tr>
  103. <tr>
  104. <td height="55" align="right" style="color: #8e6723"><b>E-mail:</b></td>
  105. <td colspan="2"><input name="email" type="text" id="email"
  106. size="45"></td>
  107. </tr>
  108. <tr>
  109. <td> </td>
  110. <td colspan="2"><input type="image" name="imageField"
  111. src="data:images/registerBt.jpg"></td>
  112. </tr>
  113. </table>
  114. </div>
  115. </td>
  116. </tr>
  117. <tr>
  118. <td> </td>
  119. </tr>
  120. </table>
  121. </form>
  122. </body>
  123. </html>

值得注意的是此处核心代码:

  1. //createRequest('http://10.65.9.181:8090/ajax/checkUser.jsp?user='+userName.value);//与jsp页面交互,可能不通过数据库
  2. createRequest('http://10.65.9.181:8090/ajax/checkUser.action?user='+ userName.value);//与struts交互,通过后台处理。
  1. 注意此处的写法。

2.服务器端代码

Action类的代码

  1. package com.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import com.opensymphony.xwork2.ActionContext;
  6. import com.opensymphony.xwork2.ActionSupport;
  7. import com.xzy.UserDAO;
  8.  
  9. public class CheckUserAction extends ActionSupport{
  10. private String user;
  11. public String findUserByName(){
  12. String info = null;
  13. UserDAO userdao = new UserDAO();
  14. if(userdao.findUserByName(user)){
  15. //info="用户名已经被注册";
  16. Map map = (Map)ActionContext.getContext().get("request");
  17. map.put("info", "用户名已经被注册");
  18. return "success";
  19. }else{
  20. //info="用户名可以注册";
  21. Map map = (Map)ActionContext.getContext().get("request");
  22. map.put("info", "用户名可以注册使用");
  23. return "fail";
  24. }
  25. }
  26.  
  27. public String getUser() {
  28. return user;
  29. }
  30.  
  31. public void setUser(String user) {
  32. this.user = user;
  33. }
  34. }

struts.xml配置

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
  3. <struts>
  4. <package name="myPackage" extends="struts-default">
  5. <!-- 定义action -->
  6. <action name="checkUser" class = "com.action.CheckUserAction" method="findUserByName">
  7. <!-- 定义处理成功后的映射页面 -->
  8. <result >/info.jsp</result>
  9. </action>
  10. </package>
  11. </struts>

info.jsp为显示信息页面

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%=request.getAttribute("info")%>

info.jsp是jsp页面,对于与安卓客户端交互的jsp页面而言,尽量略去不必要的html代码,只需要保留控制编码格式的代码和<%%>之间的处理代码,这样就避免了在安卓客户端显示不必要的垃圾代码,且提高了执行效率,降低了服务器负载。

数据库截图:


最终效果图:

ajax交互Struts2的action(1)的更多相关文章

  1. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

  2. struts2中使用json插件实现ajax交互

    json插件可以简单的实现ajax交互,避免了使用struts2-dojo-plugin.jar包时带来的struts2.x版本冲突问题.并且减少了使用ajax标签时需要的繁琐的配置包括web.xml ...

  3. [JavaWeb基础] 017.Struts2 和 ajax交互简介

    在网页开发中,我们为了只对网页的某块内容进行实时更新,而不对其他不需要更新的内容进行刷新,从而提高响应速度和节省流量,我们采用了页面的异步刷新技术Ajax,那么我们的Struts2框架在这一方面是如何 ...

  4. Struts2 项目 Action 查询结果异常 org.apache.struts2.json.JSONException

    问题描述 今天进行一个订单管理模块的开发时遇到一个问题:查询的订单时有时会报这个异常: org.apache.struts2.json.JSONException: java.lang.Illegal ...

  5. Struts2之Action

    Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...

  6. struts2的action从request获取参数值的几种方式

    使用jquery框架的ajax能够方便的向后台传递参数,以$.post为例,参数有2种方式字符串和键值对:$.post(url, "name=aty&age=25")和$. ...

  7. 关于struts2中action请求会执行两次的问题

    关于struts2中action请求会执行两次的问题     在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...

  8. J2EE进阶(三)struts2 <s:action>标签的用法

    J2EE进阶(三)struts2 <s:action>标签的用法 前言 使用action标签,可以允许在jsp页面中直接调用Action,(类似AJAX页面调用)在调用Action时候,可 ...

  9. jq的ajax交互封装

    jq封装的ajax,然后 在此前和此后都是很多要考虑的  ,何不 想想构思封装下. 下面: 基本上网页都存在各种ajax,使得网页变得更加易于操作. 举个长长的例子吧: <input type= ...

随机推荐

  1. FastReport.Net使用:[11]公共对象属性介绍

    公共对象属性介绍 1.Left(左),Top(上),Height(高度),Width(宽度) Left和Top,用来控制对象的位置:Height和Width用来控制对象的大小. 2.Anchor(基准 ...

  2. 按考分对学生排序 Exercise08_03

    /** * @author 冰樱梦 * 时间:2018年12月 * 题目:按考分对学生排序 * */ public class Exercise08_03 { public static void m ...

  3. Makefile-命令前的@和-符号

    Makefile中命令前的@和-符号如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出 ...

  4. 【8.17校内测试】【模拟】【set】【网络流】

    为什么每次想的最久的题得的分数最低!!!qwqwq 再也不在noip上尝试A*叻!! 模拟题,先把能消的消掉,双指针从两端向中间扫描,如果头尾合并可以消,就把它消掉,最后判断一下.因为消完过后num保 ...

  5. 【R笔记】R语言函数总结

    R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...

  6. 新手必须掌握的Linux命令(上)

    1.1强大好用的Shell    通常来讲,计算机硬件是有运算器,控制器,存储器,输入/ 输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核.Linux系统的内核负责完成对 ...

  7. spring ioc 理解

    springIOC 作用 springIOC 是sprig的特性.称作控制反转.将对象的创建,初始化,销毁,交给spring容器管理. 原理 在spring容器启动的时候,通过反射的方式,主动加载(或 ...

  8. Highcharts构建分组分类坐标轴

    Highcharts构建分组分类坐标轴 分组分类坐标轴是将坐标轴的类别标签进行进一步分组,从而形成双层.多层结构. 这样更利于数据分组展现. 实现分组分类坐标轴须要借助第三方插件Grouped-Cat ...

  9. python 将有序list打乱

    利用random模块下的shuffle函数就能够实现. 关于官网对于shuffle,我感觉说法上有一定的误解. 上面是官网的解释,他说会返回打乱的list,事实上什么也没有返回. 能够看到返回的是No ...

  10. mysql按某一字段分组取最大(小)值所在行的数据

    mysql按某一字段分组取最大(小)值所在行的数据   mysql技巧--按某一字段分组取最大(小)值所在行的数据,这是mysql数据库程序员经常用到的在处理一些报表数据时候可以活用!那么猎微网将总结 ...