页面代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="../extjs/ext-base.js" ></script>
<script type="text/javascript" src="../extjs/ext-all.js" ></script>
<script type="text/javascript">
<!--
Ext.onReady(function(){
var form= new Ext.form.FormPanel({
labelAlign:'center',
title:'登录',
labelWidth:50,
frame:true,
width:300,
url:'../LoginAction',
items: [{
xtype:'textfield',
            fieldLabel: '用户名',
            name:'username',
            id:'username'
           },
            {
xtype:'textfield',
inputType:'password',
            fieldLabel: '密码',
            name:'password',
            id:'password'
           },
           {
           xtype:'panel',
           html:'<center><%=(request.getParameter("tip")==null?"":request.getParameter("tip")) %></center>'
           }
        ],
buttons: [{
            text: '登录',
            handler: function() {
                form.getForm().submit();
            }
        }]

});

form.render('form');
});
-->
</script>
</head><body><div id="form"  style="margin:100px;"></div></body>
</html>servlet代码如下
package action;import java.io.IOException;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import dao.AdminDao;import po.Admin;import utils.StringUtils;/**
 * 
 * @author 曾铭新(zmx198768)
 * @create Sep 14, 2009 10:45:03 PM
 */
public class LoginAction extends HttpServlet { private static final long serialVersionUID = 5853891517115129658L; /**
 * The doGet method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request,response);
} /**
 * The doPost method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to post.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String username=request.getParameter("username");
String password=request.getParameter("password");



if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){
request.getRequestDispatcher("admin/login.jsp?tip=用户名与密码不能为空").forward(request,response);
return ;
}

Admin admin= new Admin();
admin.setUsername(username);
admin.setPassword(password);

if(!AdminDao.verify(admin)){
request.getRequestDispatcher("admin/login.jsp?tip=用户名或密码错误").forward(request,response);
return ;
}

request.getSession().setAttribute("admin","admin");
RequestDispatcher rd=request.getRequestDispatcher("admin/manager.jsp");
rd.forward(request,response);

}}
所有的情况均无法跳转
如果是从非extjs页面登录的话,则正常
此疑惑在线求解

解决方案 »

  1.   

    我是用这种方法实现的:
    var loginSuccessWindow = new Ext.Window({
    width : 300,
    height : 60,
    closeable : false,
    frame : true,
    closeAction : 'hide',
    items : [
    {
    frame : true,
    html : '登录成功<br/><img src="<%=path %>/images/wait.gif" />正在加载个人设置,请稍后……'
    }
    ]
    });

         var btn_login = new Ext.Toolbar.Button({
         id : 'btn_login',
         text : '登录',
         handler : function(){
         if(loginPanel.getForm().isValid()){
         loginPanel.getForm().doAction('submit',{
         waitMsg : '正在登陆,请稍后……',
         url : contextPath+'/userLogin.ext?pmethod=userLogin',
         method : 'post',
         success : function(response, action) {
    var message = action.result.message;
    //Ext.Msg.alert('提示',message);
    loginSuccessWindow.show()
    loginWindow.hide();
    //window.location.href='${forwardUrl }';
    setTimeout(function(){
    loginSuccessWindow.hide();
    document.location.reload();
    },2000);
    //alert(${forwardUrl});
    },
    failure:function(response,action){
    var message = action.result.message;
    Ext.Msg.alert('提示',message);

    }     
         });
         }
         }
         });
    先将数据提交到你的servlet进行登录验证。然后将验证信息传到前台。再在前台通过js来控制页面跳转!希望对你有用!
      

  2.   

    掐个断点, 看看你的extjs登录的时候, 能不能进到你的servlet中.
    如果进不去, 那么应该是你的form的url有问题
      

  3.   

    应该是配置文件的问题。建议让其它的人check一下你的XML文件。(因为自己写的自己看不出来)
      

  4.   

    我是这样做的,正常跳转buttons: [{
                    text: '登录',
                    handler: loginMethod
             }]function loginMethod(){
          if(menu.getForm().isValid()){
    Ext.Ajax.request({
                          url: 'login.do',
                          params: "uname="+Ext.get('username').dom.value+"&pwd="+Ext.get ('pwd').dom.value,
                          success:function(response,options){
                                 var result = response.responseText;
                                 if(result=="yes"){
                                      loginForm.submit();               
                                 }else{
                                    Ext.Msg.alert('消息','用户名或密码错误');
                                 }
                          },
                          failure:function(response,options){
                                 Ext.Msg.alert('错误','服务器端失败,请稍后重试');
                          }
                       })           
                    }else{
      Ext.Msg.alert('错误','请检查输入项');
      }
        }<body>
    <form actionadmin/manager.jsp" method="post" name="loginForm">
    </form>
    </body>
      

  5.   

        晕哦,不能编辑了,有些地方没对!刚改的时候改错了~~这样应该就没问题了,后台不需要写跳转
    <form action="admin/manager.jsp" method="post" name="loginForm">
    </form>