ajax交互Struts2的action(1)
1.客户端网页代码
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
- <title>检测用户名是否唯一</title>
- <script language="javascript">
- function createRequest(url) {
- http_request = false;
- if (window.XMLHttpRequest) { // 非IE浏览器
- http_request = new XMLHttpRequest(); //创建XMLHttpRequest对象
- } else if (window.ActiveXObject) { // IE浏览器
- try {
- http_request = new ActiveXObject("Msxml2.XMLHTTP"); //创建XMLHttpRequest对象
- } catch (e) {
- try {
- http_request = new ActiveXObject("Microsoft.XMLHTTP"); //创建XMLHttpRequest对象
- } catch (e) {
- }
- }
- }
- if (!http_request) {
- alert("不能创建XMLHttpRequest对象实例!");
- return false;
- }
- http_request.onreadystatechange = getResult; //调用返回结果处理函数
- http_request.open('GET', url, true); //创建与服务器的连接
- http_request.send(null); //向服务器发送请求
- }
- function getResult() {
- if (http_request.readyState == 4) { // 判断请求状态
- if (http_request.status == 200) { // 请求成功,开始处理返回结果
- document.getElementById("toolTip").innerHTML = http_request.responseText; //设置提示内容
- document.getElementById("toolTip").style.display = "block"; //显示提示框
- } else { // 请求页面有错误
- alert("您所请求的页面有错误!");
- }
- }
- }
- function checkUser(userName) {
- if (userName.value == "") {
- alert("请输入用户名!");
- userName.focus();
- return;
- } else {
- //createRequest('http://10.65.9.181:8090/ajax/checkUser.jsp?user='+userName.value);
- createRequest('http://10.65.9.181:8090/ajax/checkUser.action?user='
- + userName.value);
- }
- }
- </script>
- <style type="text/css">
- <!--
- #toolTip {
- position: absolute;
- left: 331px;
- top: 39px;
- width: 98px;
- height: 48px;
- padding-top: 45px;
- padding-left: 25px;
- padding-right: 25px;
- z-index: 1;
- display: none;
- color: red;
- background-image: url(images/tooltip.jpg);
- }
- -->
- </style>
- </head>
- <body style="margin: 0px;">
- <form method="post" action="" name="form1">
- <table width="509" height="352" border="0" align="center"
- cellpadding="0" cellspacing="0" background="images/bg.gif">
- <tr>
- <td height="54"> </td>
- </tr>
- <tr>
- <td height="253" valign="top">
- <div style="position: absolute;">
- <table width="100%" height="250" border="0" cellpadding="0"
- cellspacing="0">
- <tr>
- <td width="18%" height="54" align="right" style="color: #8e6723"><b>用户名:</b></td>
- <td width="49%"><input name="username" type="text"
- id="username" size="32"></td>
- <td width="33%"><img src="data:images/checkBt.jpg" width="104"
- height="23" style="cursor: hand;"
- onClick="checkUser(form1.username);"></td>
- </tr>
- <tr>
- <td height="51" align="right" style="color: #8e6723"><b>密码:</b></td>
- <td><input name="pwd1" type="password" id="pwd1" size="35"></td>
- <td rowspan="2">
- <div id="toolTip"></div>
- </td>
- </tr>
- <tr>
- <td height="56" align="right" style="color: #8e6723"><b>确认密码:</b></td>
- <td><input name="pwd2" type="password" id="pwd2" size="35"></td>
- </tr>
- <tr>
- <td height="55" align="right" style="color: #8e6723"><b>E-mail:</b></td>
- <td colspan="2"><input name="email" type="text" id="email"
- size="45"></td>
- </tr>
- <tr>
- <td> </td>
- <td colspan="2"><input type="image" name="imageField"
- src="data:images/registerBt.jpg"></td>
- </tr>
- </table>
- </div>
- </td>
- </tr>
- <tr>
- <td> </td>
- </tr>
- </table>
- </form>
- </body>
- </html>
值得注意的是此处核心代码:
- //createRequest('http://10.65.9.181:8090/ajax/checkUser.jsp?user='+userName.value);//与jsp页面交互,可能不通过数据库
- createRequest('http://10.65.9.181:8090/ajax/checkUser.action?user='+ userName.value);//与struts交互,通过后台处理。
- 注意此处的写法。
2.服务器端代码
Action类的代码
- package com.action;
- import java.util.Map;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- import com.xzy.UserDAO;
- public class CheckUserAction extends ActionSupport{
- private String user;
- public String findUserByName(){
- String info = null;
- UserDAO userdao = new UserDAO();
- if(userdao.findUserByName(user)){
- //info="用户名已经被注册";
- Map map = (Map)ActionContext.getContext().get("request");
- map.put("info", "用户名已经被注册");
- return "success";
- }else{
- //info="用户名可以注册";
- Map map = (Map)ActionContext.getContext().get("request");
- map.put("info", "用户名可以注册使用");
- return "fail";
- }
- }
- public String getUser() {
- return user;
- }
- public void setUser(String user) {
- this.user = user;
- }
- }
struts.xml配置
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
- <struts>
- <package name="myPackage" extends="struts-default">
- <!-- 定义action -->
- <action name="checkUser" class = "com.action.CheckUserAction" method="findUserByName">
- <!-- 定义处理成功后的映射页面 -->
- <result >/info.jsp</result>
- </action>
- </package>
- </struts>
info.jsp为显示信息页面
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%=request.getAttribute("info")%>
info.jsp是jsp页面,对于与安卓客户端交互的jsp页面而言,尽量略去不必要的html代码,只需要保留控制编码格式的代码和<%%>之间的处理代码,这样就避免了在安卓客户端显示不必要的垃圾代码,且提高了执行效率,降低了服务器负载。
数据库截图:
最终效果图:
ajax交互Struts2的action(1)的更多相关文章
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- struts2中使用json插件实现ajax交互
json插件可以简单的实现ajax交互,避免了使用struts2-dojo-plugin.jar包时带来的struts2.x版本冲突问题.并且减少了使用ajax标签时需要的繁琐的配置包括web.xml ...
- [JavaWeb基础] 017.Struts2 和 ajax交互简介
在网页开发中,我们为了只对网页的某块内容进行实时更新,而不对其他不需要更新的内容进行刷新,从而提高响应速度和节省流量,我们采用了页面的异步刷新技术Ajax,那么我们的Struts2框架在这一方面是如何 ...
- Struts2 项目 Action 查询结果异常 org.apache.struts2.json.JSONException
问题描述 今天进行一个订单管理模块的开发时遇到一个问题:查询的订单时有时会报这个异常: org.apache.struts2.json.JSONException: java.lang.Illegal ...
- Struts2之Action
Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...
- struts2的action从request获取参数值的几种方式
使用jquery框架的ajax能够方便的向后台传递参数,以$.post为例,参数有2种方式字符串和键值对:$.post(url, "name=aty&age=25")和$. ...
- 关于struts2中action请求会执行两次的问题
关于struts2中action请求会执行两次的问题 在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...
- J2EE进阶(三)struts2 <s:action>标签的用法
J2EE进阶(三)struts2 <s:action>标签的用法 前言 使用action标签,可以允许在jsp页面中直接调用Action,(类似AJAX页面调用)在调用Action时候,可 ...
- jq的ajax交互封装
jq封装的ajax,然后 在此前和此后都是很多要考虑的 ,何不 想想构思封装下. 下面: 基本上网页都存在各种ajax,使得网页变得更加易于操作. 举个长长的例子吧: <input type= ...
随机推荐
- FastReport.Net使用:[11]公共对象属性介绍
公共对象属性介绍 1.Left(左),Top(上),Height(高度),Width(宽度) Left和Top,用来控制对象的位置:Height和Width用来控制对象的大小. 2.Anchor(基准 ...
- 按考分对学生排序 Exercise08_03
/** * @author 冰樱梦 * 时间:2018年12月 * 题目:按考分对学生排序 * */ public class Exercise08_03 { public static void m ...
- Makefile-命令前的@和-符号
Makefile中命令前的@和-符号如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出 ...
- 【8.17校内测试】【模拟】【set】【网络流】
为什么每次想的最久的题得的分数最低!!!qwqwq 再也不在noip上尝试A*叻!! 模拟题,先把能消的消掉,双指针从两端向中间扫描,如果头尾合并可以消,就把它消掉,最后判断一下.因为消完过后num保 ...
- 【R笔记】R语言函数总结
R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...
- 新手必须掌握的Linux命令(上)
1.1强大好用的Shell 通常来讲,计算机硬件是有运算器,控制器,存储器,输入/ 输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核.Linux系统的内核负责完成对 ...
- spring ioc 理解
springIOC 作用 springIOC 是sprig的特性.称作控制反转.将对象的创建,初始化,销毁,交给spring容器管理. 原理 在spring容器启动的时候,通过反射的方式,主动加载(或 ...
- Highcharts构建分组分类坐标轴
Highcharts构建分组分类坐标轴 分组分类坐标轴是将坐标轴的类别标签进行进一步分组,从而形成双层.多层结构. 这样更利于数据分组展现. 实现分组分类坐标轴须要借助第三方插件Grouped-Cat ...
- python 将有序list打乱
利用random模块下的shuffle函数就能够实现. 关于官网对于shuffle,我感觉说法上有一定的误解. 上面是官网的解释,他说会返回打乱的list,事实上什么也没有返回. 能够看到返回的是No ...
- mysql按某一字段分组取最大(小)值所在行的数据
mysql按某一字段分组取最大(小)值所在行的数据 mysql技巧--按某一字段分组取最大(小)值所在行的数据,这是mysql数据库程序员经常用到的在处理一些报表数据时候可以活用!那么猎微网将总结 ...