小弟写了个登陆界面,页面提交给servlet,提交方法用post得不到值,用get却可以。可是不能用get啊,不然密码地址栏里都出来了
登陆jsp如下:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>网站信息管理系统</title>
<link href="home/home.css" rel="stylesheet" type="text/css" />
</head> <body>
<Script>if(self!=top){top.location=self.location;}</script>

<script language="javascript">
function checklogin() {
if (document.login.name.value == '') {
alert('请输入帐户');
document.login.username.focus();
return false
}
  if (document.login.password.value == '') {
alert('请输入密码');
document.login.password.focus();
return false
}
if (document.login.yzm.value == '') {
alert('请输入验证码');
document.login.yzm.focus();
return false
}
}
</script>
<div class="b_w">
<div class="l_t">
<div class="left l_title">
网站管理系统
</div>
<div class="right">
<a href="../"> <img src="home/icon_back.gif" alt="返回" hspace="4" vspace="8" border="0" /> </a>
<a href="javascript:window.close()"><img src="home/icon_close.gif" alt="关闭" hspace="4" vspace="8" border="0" />
 </a>
</div>
</div>
<div class="l_bg">
<form action="/SixMen/Employee" name="login" method="post"
onSubmit="return checklogin();">
<ul class="l_user">
<li>
帐户:
<input name="name" size="14" type="text" class="l_input" />
</li>
<li>
密码:
<input name="password" size="14" type="password" class="l_input" />
</li>
<li>
验证:
<input name="yzm" id="yzm" size="3" type="text" class="l_input" />
<img id=img src="home/img.jsp" alt="图片看不清?点击刷新"
onclick="img.src='home/img.jsp?'+new Date().getTime()";>
</li>
<li>
<input class="l_bnt" value="登 录" type="submit" />
<input class="l_bnt" value="重 写" type="reset" />
</li>
</ul>
</form>
</div>
<div class="l_f">
<div class="left">
<img src="home/f_l.gif" />
</div>
<div class="left">
<img src="home/f_bg.gif" width="378" height="36" />
</div>
<div class="right">
<img src="home/f_r.gif" />
</div>
</div>
</div>
</body>
</html>servlet代码如下:package com.SixMen.Servlet.Employee;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.SixMen.Dao.Employee.EmployeeDao;
import com.SixMen.Impl.Employee.EmployeeImpl;public class EmployeeLoginServlet extends HttpServlet {
/**
 * 
 */
private static final long serialVersionUID = 1993790530757753459L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
String ses=(String)session.getAttribute("code");//获取验证码
System.out.println(ses);//////////////////////
String yzm=request.getParameter("yzm");//获取用户输入的验证码
System.out.println(yzm);//////////////////////
String name = request.getParameter("name");
System.out.println(name);//////////////////////
String pasw=request.getParameter("password");//获取用户名和密码

if(request.getAttribute("employeename")!=null){
request.getRequestDispatcher("Employee/alreadylogin.jsp").forward(request, response);//已经登录
}else if(name!=null){
System.out.println("开始登陆1");
if(ses.equals(yzm)){//验证码一致
EmployeeDao user=new EmployeeImpl();
if(user.CheckUser(name, pasw)){//判断用户登录信息
session.setAttribute("employeename", name);//将用户姓名记入session
session.setAttribute("dutyID", user.getUserdutyID(name));//将用户的岗位id记入session
session.setAttribute("depname", user.getUserDepname(name));//将用户的部门name记入session
request.getRequestDispatcher("/Employee/Storeroom").forward(request, response);//登陆成功
}else{
request.getRequestDispatcher("/Employee/").forward(request, response);//登录失败
}
}else{
request.getRequestDispatcher("/Employee/").forward(request, response);//登录失败
}
}else{
System.out.println(name);
System.out.println("开始登陆2");
request.getRequestDispatcher("/Employee/login.jsp").forward(request, response);
}
}}

解决方案 »

  1.   

    request.getAttribute("yzm"); 改成这样     用POST 试试看
      

  2.   

    试了,没取到值,输出的还是null
      

  3.   

    是不是我在页面里获得图片时有请求冲突啊?
    <img id=img src="home/img.jsp" alt="图片看不清?点击刷新"
                                    onclick="img.src='home/img.jsp?'+new Date().getTime()";>
      

  4.   

    <li>
          帐户:
          <input name="name" size="14" type="text" class="l_input" />
    </li>
    <li>
          密码:
          <input name="password" size="14" type="password" class="l_input" />
    </li>你把账户name属性的value改一下试试,我记得老师那时候都严禁我们偷懒使用这些名字
      

  5.   

    你先把图片验证去掉试试看!  看能不能执行post方法!
      

  6.   

    图片去掉了,js验证去掉了
    重写了一个servlet2:
    public class login extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request, response);
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    System.out.println(request.getParameter("userna"));
    }
    login.jsp和servlet2可以的
    为什么啊……
      

  7.   

     <img id=img src="home/img.jsp" alt="图片看不清?点击刷新"
                                    onclick="img.src='home/img.jsp?'+new Date().getTime()";>
    这个id没加双引号,还有加个name属性
    如果还不行的话把img.jsp换成html,再不行把img.jsp放到form外面!
      

  8.   

    页面问题排查方法:
       删除页面非关键内容,先保证主要功能可用,再添加其他的。你的js,验证码,div,都是额外的。尝试只保留form和必须的input。
      

  9.   

    我现在把原来servlet中的代码原封不动的转移到另一个servlet2中
    servlet2可以用的了
      

  10.   

    恩啊,换了一个servlet,post就可以传值了。
      

  11.   

    [Quote=引用 10 楼 java2000_net 的回复:]页面问题排查方法:
       删除页面非关键内容,先保证主要功能可用,再添加其他的。你的js,验证码,div,都是额外的。尝试只保留form和必须的input。
    [/Quote
    ]很久没见过老紫竹在论坛活动了啊!
      

  12.   

    post请求的时候,form提交的按钮太多,所以会出现这个错误,建议如楼上说的一样,把验证放到别的jsp中用<jsp:include page="验证的jsp页面"> 试试!