首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

小弟我的登录页面出有关问题了 -盼

2013-03-19 
我的登录页面出问题了 --急盼高手指点!structs.xml 中用 include 了structs-yxwl.xml structs-yxwl.xml 内

我的登录页面出问题了 --急盼高手指点!


structs.xml 中用 include 了structs-yxwl.xml 
structs-yxwl.xml 内容如下
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="default" extends="struts-default"  namespace="/">    
        <action name="loginaction" class="struts2.LoginAction">   
              <result name="success">/index.jsp</result>
              <result name="error">/error.html</result>
        </action>
    </package>
</struts>
--------------------
web.xml 中设置如下:
 <servlet> 
    <servlet-name>loginValidateServlet</servlet-name>
    <servlet-class>servlet.loginValidateServlet</servlet-class>
  </servlet> 
  <servlet-mapping>
    <servlet-name>loginValidateServlet</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
  </servlet-mapping>
----------------------
我逻辑是:
当用进入 http://192.168.1.xxx:8888/yxwl 时 缺省页面为 index.jsp 主页面

当进入主页面时  调用servlet.loginValidateServlet  判断当前用户是否登录


servlet.loginValidateServlet 的代吗如下:

package servlet;
import ..........
..................
import Gen.md5uitl;
import Gen.cookieuitl;
import com.yxwl.model.*;

public class loginValidateServlet extends HttpServlet {

private static final long serialVersionUID = 1L;
public loginValidateServlet() {super();}
public void destroy() {super.destroy(); }

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    response.setCharacterEncoding("gb2312");   
    Cookie cookie= cookieuitl.getCookieByName(request, "yxwl_Login");
   
    try{
     
           if(cookie!=null){
   //用户已登录

    }else {
                         //用户未登录, 跳到登录页面
        response.sendRedirect("login.jsp");
    }
    }catch(Exception ex){    
    '........    
    }finally{     }}

        public void init() throws ServletException {


// Put your code here
}

}



-------------------------------
//登录页面login.jsp 如下
<html>
<boday>
<form class="form-horizontal" action="loginaction" method="POST">
 <fieldset>
  <div class="input-prepend" title="Username" data-rel="tooltip">
   <span class="add-on"><i class="icon-user"></i></span>
   <input autofocus class="input-large span10" name="name" id="name" type="text"   value="" />
  </div>
 <div class="clearfix"></div>

     <div class="input-prepend" title="Password" data-rel="tooltip">
     <span class="add-on"><i class="icon-lock"></i></span>
    <input class="input-large span10" name="password" id="password" type="password" value="" />
  </div>
<div class="clearfix"></div>
<div class="input-prepend">
   <label class="remember" for="remember">
     <input type="checkbox" id="remember" />Remember me</label>
  </div>
  <div class="clearfix"></div>

   <p class="center span5">
   <button type="submit" class="btn btn-primary">登录</button>
   </p>
</fieldset>
</form>
</body>
</html>


当用户提交 登录 按钮时 调用 structs2.LoginAction.java, 匹配密码正确就
将当前用户名存入 cookie 并命名为 yxwl_Login  返回 success ,否则返回error 

返回success 时, 自动跳转到 index.jsp 主页面
返回error 时 ,自动跳转到 error.html 错提示页面 
代码如下:

package struts2;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

import Gen.cookieuitl;
import com.yxwl.model.*;
import com.yxwl.bll.*;

@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
  private String Username;
  private String Password;

 @Override
  public String execute()  throws Exception
  {   
   HttpServletRequest request=ServletActionContext.getRequest();
   HttpServletResponse response = ServletActionContext.getResponse();
   response.setCharacterEncoding("gb2312");
   request.setCharacterEncoding("gb2312");

   this.Username=request.getParameter("name");
   this.Password=request.getParameter("password");
   yxwl_userLog userLog=null;
   userLog=yxwl_userManager.GetUserLog(Username);
   if(userLog!=null){
      //如果password 相同
       if(this.Password.equals(userLog.getuserPassword())) {
String x=userLog.getyxwl_id();
cookieuitl.addCookie(response, "yxwl_Login", x, 3600);return Action.SUCCESS;


      }else {
       return Action.ERROR;
      }
     }else {
       return Action.ERROR;
      }
    }
}



====================
我遇到以下两个问题:
1.通过 login.jsp页面提交后
   第一次提交完后 如果返回是success 还是停留在login.jsp 页面
   再次提交用户名和密码后才会跳到 index.jsp 页面(通过弹出提示确定)
   但是地址栏显示为http://192.168.1.xxx:8888/yxwl/loginaction 
   -- loginaction就是structs-yxwl.xml 中 action 的名字 (更换名试过)
----------


2. 当我第二次提交login.jsp页面后,页面跳转到了index.jsp页面,后调用
servlet.loginValidateServlet  检查时,程序此时进入到了
 if(cookie!=null){   //用户已登录  } 并确定已登录,确不能显示 index.jsp主页面内容
而显示的是空白页 

这是神马原因,急盼高手指点/谢谢!!
[解决办法]
  private String Username;
  private String Password;  
首字母都小写,尤其setXXX和getXXX,页面上的也是。
[解决办法]
<boday>,页面标签,各种错
[解决办法]
private String username;
  private String password;

提供的get set方法呢
没有方法,this.username等怎么会有值呢
[解决办法]
login.jsp没有头信息吗?
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
[解决办法]
首先你的二次提交登录很可能是web.xml配置的原因,因为你没有将struts2的拦截器配置进去,所以可能并不能从一开始将每次的请求都拦截下来。可以尝试修改:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ModelProject</display-name>
  <welcome-file-list>
    <welcome-file>Index.jsp</welcome-file>
  </welcome-file-list>
  <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>
[解决办法]
而index.jsp里面只需要一句话:<meta http-equiv='refresh' content='0;url=XXXX.action'>,这样把整个网站的请求都交给struts2拦截分配,应该可以解决你的问题。  
[解决办法]

 cookieuitl.addCookie(response, "yxwl_Login", x, 3600); 


添加cooike的时候掉东西哦了
[解决办法]
清空缓存,看效果。

热点排行