读书人

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

发布时间: 2013-03-19 17:22:05 作者: rapoo

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


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的时候掉东西哦了
[解决办法]
清空缓存,看效果。

读书人网 >Java Web开发

热点推荐