strus2和extjs集成实现登陆

最近学习在学习ext这个前台的界面框架,遇到一个难题就是不知道怎么让我们优秀的ext与我们优秀的struts集成起来,经过在网上的一番收索学习之后,做成了下面这个傻瓜教程。希望能对像我一样刚开始学习ext的朋友有帮助。

1准备工作:
除了平时引入的struts2的jar包以外,还需要引入struts2-json-plugin-2.1.8.1.jar;json-lib-2.1.jar这两个包。
Json介绍:
和XMl一样,JSON也是一种基于纯文本的数据格式。由于JSON天生好似为javascript准备的,因此JSON的数据格式非常的简单。想了解更多的关于JSON的知识请百度。。。
2.建立我们的model:User
package com.isun.model;

public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

3.建立我们的Action
这里是简单的演示struts-2与extjs的集成,所以全部的业务逻辑都放在Action中进行处理了。建立我们的LoginAction.当表单提交过来的时候我们也就能够在LoginAction中拿到数据了呵呵。
package com.isun.action;

import com.isun.model.User;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
private boolean success;
private String message;
private User user;

public String execute()throws Exception{
if(user.getUsername().equals("admin")&&user.getPassword().equals("admin")){
this.success = true;
this.message = "你的账号是:"+user.getUsername()+"密码为:"+user.getPassword();
}else{

this.success = false;
this.message = "对不起,未经授权的用户不能登录该系统!";
}
return SUCCESS;
}

public boolean isSuccess() {
return success;
}

public void setSuccess(boolean success) {
this.success = success;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}
}

4.配置我们的struts.xml,注意extends=”json-default”

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="extjs" extends="json-default" namespace="/">
    <action name="Login" class="com.isun.action.LoginAction">
    <result type="json"></result>
    </action>
    </package>
</struts>

5.在web.xml文件中陪上struts2
<?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">
<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>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

6.接下来是前台的页面,其中包括login.html(登陆的界面),login.js(javascript代码),index.jsp(登陆成功后返回的界面)
Login.html
<!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">
<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"/>
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext/ext-all-debug.js"></script>
<script type="text/javascript" src="js/login.js"></script>
<title>Extjs 学习</title>
</head>
<body>

</body>
</html>

Login.js
Ext.onReady(function(){
//使用表单提示
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget ="side";
//定义一个输入表单
var simple = new Ext.FormPanel({
labelWidth:40,
baseCls:'x-plain',
defaults:{width:180},
items:[{
xtype:'textfield',
fieldLabel:'账号',
name:'user.username',
allowBlank:false,
blankText:'账号不能为空'
},{
xtype:'textfield',
inputType:"password",
fieldLabel:"密码",
name:'user.password',
allowBlank:false,
blankText:"密码不能为空"
}],
buttons:[{
text:"提交",
type:"submit",
handler:function(){
if(simple.form.isValid()){
Ext.MessageBox.show({
title:"请等待",
msg:"正在加载",
progressText:"",
width:300,
progress:true,
closable:false,
animEl:'loding'
});

var f = function(v){
return function(){
var i = v/11;
Ext.MessageBox.updateProgress(i,'');
}
}

for(var i = 1; i < 13; i++){
setTimeout(f(i),i * 150);
}

//提交到服务器操作
simple.form.doAction("submit",{
url:"Login.action",
method:"post",
success:function(form,action){
document.location = 'index.jsp';
Ext.Msg.alert("登录成功!",action.result.message);
},
failure:function(form, action){
Ext.Msg.alert('登录失败',action.result.message);
}

});
}
}
},{
text:"重置",
handler:function(){
//重置表单
simple.form.reset();
}
}]
});
//定义窗体
var _window = new Ext.Window({
title:"登录窗口",
layout:"fit",
width:280,
height:150,
plain:true,
bodyStyle:"padding:10px",
maximizable:false,
closeAction:"close",
closable:false,
collapsible:true,
plain:true,
buttonAlign:"center",
items:simple
});
_window.show();
});

Index.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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>Insert title here</title>
</head>
<body>
恭喜你登陆成功了!
</body>
</html>

最后
通过上面的傻瓜教程我想朋友你应该已经知道怎么让strus2和extjs集成了吧!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值