前言:Struts2作为一款优秀的MVC框架,和Ajax结合在一起,用户就会有良好的体验,本篇博文我们来模拟一个简单的登录操作,实现Ajax的异步请求,其中Struts2进行的是链接处理,Action动态处理请求,Ajax负责进行异步处理,传送数据与返回数据,其中主要使用的技术有:struts2+Ajax+Jquery+Css,好吧,废话不多说,让我们来看看这个实例吧。

第一步:新建一个Dynamic web project,然后起名:Struts2Ajax,引入相关的jar包,在web.xml文件中配置struts2的filter.我们都知道新的请求首先进入的.xml文件,所以配置上过滤器,这样请求就会自动进入交给struts2处理了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts2Ajax</display-name>
<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>

  

第二步:我们来配置Struts2的配置文件,其中主要是配置Action,也就是请求过来交给谁进行处理,注意这里的result Type="stream"是io中流的方式,它输出的是二进制数据,我们的contentType是html文件,它最终会返回页面以html的形式出现在页面下角

<?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="StrutsAjax" extends="struts-default">
<action name="login" class="com.wyq.Action.LogAction">
<result type="stream" name="success">
<param name="cotentType">text/html</param>
<param name="inputName">result</param>
</result>
</action>
</package>
</struts>

  第三步:我们新建一个包,起名com.wyq.Action,主要是来存放请求的Action。新建类,LoginACtion,代码如下:

package com.wyq.Action;

import java.io.ByteArrayInputStream;
import java.io.InputStream; import com.opensymphony.xwork2.Action; public class LogAction implements Action{ private String user; private String pass; private InputStream inputStream; public String getUser() {
return user;
} public void setUser(String user) {
this.user = user;
} public String getPass() {
return pass;
} public void setPass(String pass) {
this.pass = pass;
} public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
} public InputStream getResult() {
return inputStream;
} @Override
public String execute() throws Exception { String sus="恭喜你,登录成功!"; String fail="对不起,用户名和密码不匹配"; inputStream=user.equals("wangyongqiang")&&pass.equals("123")?new ByteArrayInputStream(sus.getBytes("UTF-8")):new ByteArrayInputStream(fail.getBytes("UTF-8")); return SUCCESS;
} }

  第四步:我们来编写请求的页面,loginForm.jsp,其中要引入Jquery框架,使用到css,这里为了方便起见,我采用的方式是引入一个互联网中的jquery资源,然后借助于Jquery的Ajax,实现异步请求

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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">
<head>
<title>使用stream结果实现Ajax</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"
type="text/javascript">
</script>
</head>
<body>
<s:form id="loginForm">
<s:textfield name="user" label="用户名"/>
<s:textfield name="pass" label="密码"/>
<tr><td colspan="2">
<input id="loginBn" type="button" value="提交"/>
</td></tr>
</s:form> <div id="show" style="display:none;">
</div>
<script type="text/javascript">
// 为id为loginBn的按钮绑定事件处理函数
$("#loginBn").click(function()
{
$("#show").hide();
// 指定向login发送请求,以id为loginForm表单里各表单控件作为请求参数
$.get("login" , $("#loginForm").serializeArray() ,
// 指定回调函数
function(data , statusText)
{
$("#show").height(30)
.width(400)
.css("border" , "1px solid black")
.css("border-radius" , "10px")
.css("background-color" , "#efef99")
.css("color" , "#ff0000")
.css("padding" , "20px")
.empty();
$("#show").append("登录结果:" + data + "<br />");
$("#show").show(2000);
},
// 指定服务器响应为html
"html");
});
</script>
</body>
</html>

  第五步:编译,然后放在weblogic中部署,接下来就可以运行了。在浏览器窗口,输入:http://localhost:7001/Struts2Ajax/loginForm.jsp,我们就可以看到一个登陆框。

然后,按照我们的写法,先来输入一个错误的用户名和密码,我们看看会发生什么情况。

再按照Action中设置的账号和密码,我们来看看会返回什么结果;

总结:这就是一个完整的Struts2和Ajax结合的实例,虽然很简单,但是也可以学到很多知识,比如Struts2支持的返回类型为Stream,这是一种流的方式,就可以进行数据输出,从而结合与jquery,就可以实现异步请求,以下是基本原理图:

Struts2结合Ajax实现登录的更多相关文章

  1. Struts2与Ajax数据交互

    写在前面: ajax请求在项目中常常使用,今天就平时掌握的总结一下,关于使用ajax请求到Struts2中的action时,前台页面与后台action之间的数据传递交互问题. 这里我主要记录下自己所掌 ...

  2. 用户管理的设计--4.jquery的ajax实现登录名的校验

    页面效果 鼠标失去焦点时,不需要刷新页面进行校验,判断登录名是否重复. 实现步骤 1.引入struts2-json-plugin-2.5.10.1插件包 2.页面使用jquery的ajax实现后台校验 ...

  3. 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  4. Struts2与Ajax的整合

    整合: 导入jar包 sturts2-json-plugin-2.1.8.1.jar 说明: 在该jar包中有struts-plugin.xml文件 <struts>            ...

  5. ajax基础语法、ajax做登录、ajax做用户名验证是否可用、ajax做关键字查询动态显示、ajax做用表格显示数据并增加操作列

    AJAX: AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.   ...

  6. Struts2之ajax初析

    Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单, ...

  7. Struts2与ajax整合之缺点

    之前有篇博客介绍了Struts2与ajax的整合,链接Struts2之-集成Json插件实现Ajax 这里不再累述,看以上博客. 此篇博客想吐槽一下Struts2的缺点--错误处理做的不好,怎么做的不 ...

  8. ajax 做登录 实现页面免刷新

    结合之前学的知识,可以用ajax来传递数据,实现页面不用刷新,仅数据刷新,来看一下ajax是怎么来实现页面免刷新的 方的是客户端,圆的是服务器 如果没有ajax的话,客户端直接把数据传给服务器,服务器 ...

  9. ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

随机推荐

  1. Python实现简易端口扫描器

    在网上的一些资料的基础上自己又添了些新内容,算是Python socket编程练手吧. #coding=utf-8 import socket import time import sys impor ...

  2. Java 比较(==, equals, compareTo, compare)

    在Java中,有 ==, equals(), compareTo(), compare() 等方法可以比较两个值或对象,比较容易混淆.画了个简单的思维导图总结一下 Java Compares 我经常记 ...

  3. CF Educational Codeforces Round 10 D. Nested Segments 离散化+树状数组

    题目链接:http://codeforces.com/problemset/problem/652/D 大意:给若干个线段,保证线段端点不重合,问每个线段内部包含了多少个线段. 方法是对所有线段的端点 ...

  4. java运算符 与(&)、非(~)、或(|)、异或(^)

    最近看HashMap源码,遇到了这样一段代码: static final int hash(Object key) { int h; return (key == null) ? 0 : (h = k ...

  5. [.NET] 《Effective C#》读书笔记(二)- .NET 资源托管

    <Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

  6. app测试特点

    一.安装与卸载1.软件安装后是否可以正常运行:2.安装过程中是否可以中断3.安装空间不足时是否有相应的提示4.是否可以卸载应用(桌面卸载和应用卸载)二.权限测试1.扣费风险:包括发送短信.拨打电话.连 ...

  7. JDK与Apache Tomcat服务器的安装步骤

    先解释一下JDK和Tomcat是什么: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP ...

  8. C#中 dynamic 关键字

       所有表达式都能隐式的转换成dynamic,因为所有的表达式最终都能生成从Object派生出的类型. ; int b = a; //隐式转换错误 int b2 = (int)a; ; int b3 ...

  9. FrameBuffer系列 之 相关结构与结构体

    在linux中,fb设备驱动的源码主要在Fb.h (linux2.6.28\include\linux)和Fbmem.c(linux2.6.28\drivers\video)两个文件中,它们是fb设备 ...

  10. 如何使用python生成xml

    最近要用python生成一个xml格式的文件.因为有一些内容是中文,原来的xml文件中使用了CDATA 的部分. 而之前的python程序所用的库中没有 创建这个区域的方法.无奈研究了大半天. 最后用 ...