Oooooooo0ooo 2024-05-14 19:59 采纳率: 57.1%
浏览 48

request.getParameter()获取的一直是NULL

在使用AddUserServlet的时候request.getParameter("userName")获取的一直是NULL。在需要添加的表里所有属性获取的都是NULL。

package y2javaee.xmal1.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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


import y2javaee.xmal1.common.Validate;
import y2javaee.xmal1.entity.Book;
import y2javaee.xmal1.entity.Users;
import y2javaee.xmal1.operation.BookBo;
import y2javaee.xmal1.operation.UserBo;
/**
 * 处理通讯录user注册功能的Servlet
 */

public class AddUserServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

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

        this.doPost(request, response);
    }

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

        //中文处理
        request.setCharacterEncoding("gb2312");
        response.setContentType("text/html;charset=gb2312");
        **//获取用户输入数据,就是这里的出问题
        String userName=Validate.validStringNull(request.getParameter("userName"));
        System.out.println("姓名:" + request.getParameter("userName"));
        String password=Validate.validStringNull(request.getParameter("password"));
        System.out.println("姓名:" + request.getParameter("password"));
        String realName=Validate.validStringNull(request.getParameter("realName"));

        Validate e = new Validate();
        String sex = e.validStringNull(request.getParameter("sex"));
        System.out.println("姓名:" + request.getParameter("sex"));
        String role=Validate.validStringNull(request.getParameter("role"));
        //封装数据
        System.out.println("aaa:" + userName);
        Users users=new Users();
        users.setUserName(userName);
        users.setPassword(password);
        users.setRealName(realName);
        users.setSex(sex);
        users.setRole(role);

        users=(Users)request.getSession().getAttribute("users");
        System.out.println(request.getParameter("userName"));
        //创建通讯录的业务类对象,并调用添加方法
        UserBo userBo=new UserBo();
        int count=userBo.insertUser(users);
        System.out.println("count");
        //PrintWriter对象用于直接向输出流中输出数据。
        PrintWriter out=response.getWriter();
        
        if (count > 0) {

            System.out.println("bbbb:" + count);
            //添加成功
            out.print("<script type='' language='javascript'>alert('添加成功。');location.href='addUser.jsp'; </script>");
        }else{
            //添加失败

            System.out.println("cccc:");
            out.print("<script type='' language='javascript'>alert('添加失败。');history.go(-1); </script>");
        }
        
        /* flush() 是把缓冲区的数据强行输出, 主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。
        */
        
        
        out.flush();
        out.close();        
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occure
     */
    public void init() throws ServletException {
        // Put your code here
    }

}


对应的adduser的jsp如下

<%@ page language="java" import="y2javaee.xmal1.entity.Users" pageEncoding="gb2312" contentType="text/html;charset=gb2312" %>
<html>
<head>
    <title>用户表</title>
    <META http-equiv=Content-Language content=zh-cn>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <LINK href="images/enter.css" type=text/css rel=stylesheet>
</head>

<BODY style="BACKGROUND-IMAGE: url(images/2e_bg.jpg)">
<DIV align=center>
    <TABLE style="BORDER-COLLAPSE: collapse" height=576 cellPadding=0
           width=990 border=0>
        <TR>
            <TD width=230>
                <!--   left.html -->
                <%@include file="left.jsp"%>
                <!-- end left.html -->
            </TD>

            <TD width="677" valign="top">

                <table width="656" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td height="10" colspan="3"></td>
                    </tr>
                    <tr>
                        <td colspan="3">
                            <img src="images/33e_top1.jpg" width="656" height="17">
                        </td>
                    </tr>
                    <tr>
                        <td colspan="3">
                            <OBJECT  id="obj7" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"  height="34" width="656"  border="0" classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000">
                                <PARAM NAME="movie" VALUE="images/you.swf">
                                <PARAM NAME="menu" VALUE="false">
                                <PARAM NAME="quality" VALUE="High">
                                <PARAM NAME="wmode" VALUE="transparent">
                                <embed src="images/33e_top11.swf"
                                       pluginspage="http://www.macromedia.com/go/getflashplayer"
                                       type="application/x-shockwave-flash" name="obj7" width="656"
                                       height="34" quality="High" wmode="transparent"></OBJECT>
                        </td>
                    </tr>
                    <tr>
                        <td width="2%">
                            <IMG height=519 src="images/33e_left.jpg" width=13 border=0>
                        </td>

                        <td width="95%" align="center" valign="top" bgcolor="#FFFFFF">
                            <!-- banner.html  -->
                            <%@include file="banner.jsp"%>
                            <!-- end  banner.html  -->

                            <!-- main.jsp  -->
                            <form name="add" method="post" action="AddUserServlet">
                                <table id="Table_01" width="99.99%" border="0" cellpadding="0"
                                       cellspacing="0"
                                       style="font-size:12px;    font-family:Verdana, Arial, Helvetica, sans-serif;">
                                    <tr>
                                        <td valign="top" background="image/flower/tl.jpg">
                                            <img src="../images/spacer.gif" width="138" height="1" />
                                        </td>
                                        <td valign="top" background="image/flower/bg.jpg">&nbsp;</td>
                                        <td valign="top" background="image/flower/m_bg.jpg">
                                            <img src="image/flower/tr.jpg" width="80" height="40" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top" background="image/flower/m_tl.jpg">&nbsp;</td>
                                        <td width="100%" valign="top"
                                            background="image/flower/bg.jpg"
                                            style="height:200px;padding:0 0 70px 30px;">
                                            <TABLE width="100%" style="cellpadding: 0px; cellspacing: 0px; margin-top: 0px; margin-Left: 0px; table-layout: fixed;WORD-BREAK: break-all; WORD-WRAP: break-word">
                                                <TR>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top" width="20%">
                                                        用户名:
                                                    </TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top" width="30%">
                                                        <input type="text" name="userName" size="15" />
                                                    </TD>

                                                    <TD style="color:#4c4743;line-height:160%;" valign="top"
                                                        width="20%">
                                                        性别:
                                                    </TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top" width="30%">
                                                        <select name="sex">
                                                            <option value="男"></option>
                                                            <option value="女"></option>
                                                        </select>
                                                    </TD>
                                                </TR>
                                                <TR>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top"
                                                        width="30%">
                                                        密码:
                                                    </TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top">
                                                        <input type="text" name="password" size="15" />
                                                    </TD>

                                                    <TD style="color:#4c4743;line-height:160%;" valign="top"
                                                        width="30%">
                                                        真实姓名:
                                                    </TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top">
                                                        <input type="text" name="realName" size="15" />
                                                    </TD>
                                                </TR>

                                                <TR>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top"
                                                        width="30%">
                                                        角色:
                                                    </TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top" colspan="3">
                                                        <select name="role">
                                                            <option value="1">用户</option>
                                                            <option value="2">管理员</option>

                                                        </select>
                                                    </TD>
                                                </TR>
                                                <TR>
                                                    <TD align="right">&nbsp;</TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top" width="30%"><input type="submit" value="提交" onClick="event.preventDefault(); window.location.href='AddUserServlet';"/></TD>
                                                    <TD style="color:#4c4743;line-height:160%;" valign="top"  colspan="2"><input type="reset" value="重置" /></TD>
                                                </TR>
                                            </TABLE>
                                        </td>
                                        <td width="47" valign="top" background="image/flower/m_bg.jpg">&nbsp;</td>
                                    </tr>
                                </table>
                            </form>

                            <!-- end main.jsp -->
                        </td>
                        <td width="3%">
                            <img src="images/33e_right.jpg" width="21" height="519">
                        </td>
                    </tr>
                    <tr>
                        <td colspan="3">
                            <img src="images/33e_down.jpg" width="656" height="15">
                        </td>
                    </tr>

                </table>

            </TD>


            <TD width=85>
                <!--  tag.jsp   -->
                <%@include file="tag.jsp"%>
                <!--   end tag.jsp  -->
            </TD>
        </TR>
    </TABLE>
</DIV>

<!--  foot.jsp        -->
<%@include file="foot.jsp"%>
<!--  end foot.jsp  -->
</body>

</html>



web.xml如下

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>AddUserServlet</servlet-name>
    <servlet-class>y2javaee.xmal1.servlet.AddUserServlet</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>AddUserServlet</servlet-name>
    <url-pattern>/AddUserServlet</url-pattern>
  </servlet-mapping>

输出的时候

img


都是空值,在页面添加用户一直都是添加失败

  • 写回答

2条回答 默认 最新

  • 笑面虎 2024-05-14 19:59
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    您想要解决的问题:您遇到的问题是在使用AddUserServlet时,通过request.getParameter("userName")等方法获取的参数一直是NULL,导致无法正确添加用户信息。

    图片内容

    1. 第一张图片显示了错误日志,其中包含了Java.Lang.NullPointerExc异常,这通常意味着在尝试使用null对象时发生了空指针异常。
    2. 第二张图片是AddUserServlet的代码,其中包含了处理表单提交和用户信息添加的逻辑。
    3. 第三张图片是adduser.jsp页面的代码,这是用户提交用户信息的表单。
    4. 第四张图片是web.xml配置文件的一部分,定义了AddUserServlet的映射。

    问题出现原因

    1. 表单提交问题:在adduser.jsp中的表单提交按钮使用了onClick="event.preventDefault(); window.location.href='AddUserServlet';",这实际上阻止了表单的默认提交行为,并尝试重定向到AddUserServlet。这可能导致表单数据没有被正确发送到服务器。
    2. 编码问题:在AddUserServlet中设置了请求的字符编码为gb2312,但是如果表单数据的编码和这个不一致,可能会导致获取参数时得到NULL。
    3. 表单数据获取:在Servlet中获取表单数据时,使用了Validate.validStringNull方法来获取参数,如果这个方法内部实现有问题,也可能导致获取到NULL。

    问题解决方案

    1. 修正表单提交:移除adduser.jsp中提交按钮的onClick事件,让表单正常提交。
    2. 检查字符编码:确保表单提交的数据编码与Servlet中设置的编码一致。
    3. 调试Validate方法:检查Validate.validStringNull方法的实现,确保它正确地返回了表单参数。

    提供代码: 修改adduser.jsp中的表单提交按钮,移除onClick事件:

    <input type="submit" value="提交" />
    

    代码运行方式

    1. 将修改后的adduser.jsp部署到您的Web服务器上。
    2. 启动服务器并访问adduser.jsp页面。
    3. 填写表单并提交,查看是否能够正确获取参数并添加用户。

    代码预期运行结果: 如果问题解决,提交表单后,用户信息将被正确添加到数据库中,并且页面将显示添加成功的提示。

    推荐相关链接

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月14日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误