Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 覆盖函数未更新全局变量_Java - Fatal编程技术网

Java 覆盖函数未更新全局变量

Java 覆盖函数未更新全局变量,java,Java,我在让doGet的覆盖函数更新全局arrayList变量“list”时遇到了一个问题,这样我就可以在doPost函数中对其进行迭代。我对java有些生疏,因为我已经有一段时间没有使用它了,所以我除了怀疑它与我使用重写函数的事实有关外,似乎找不到其他问题。感谢您的帮助,代码如下 公共类MembershipControllerServlet扩展了HttpServlet{ public static ArrayList list=new ArrayList(); @凌驾 受保护的void doGet(

我在让doGet的覆盖函数更新全局arrayList变量“list”时遇到了一个问题,这样我就可以在doPost函数中对其进行迭代。我对java有些生疏,因为我已经有一段时间没有使用它了,所以我除了怀疑它与我使用重写函数的事实有关外,似乎找不到其他问题。感谢您的帮助,代码如下

公共类MembershipControllerServlet扩展了HttpServlet{
public static ArrayList list=new ArrayList();
@凌驾
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
String action=request.getParameter(“action”);
字符串url=“/index.html”;
if(action==null){
action=“”;
}
else if(action.equals(“注册”)){
url=“/signup.jsp”;
}
否则{
字符串m=”“;
字符串名称=request.getParameter(“名称”);
字符串user=request.getParameter(“用户名”);
字符串密码=request.getParameter(“密码”);
字符串地址=request.getParameter(“地址”);
String countries[]=request.getParameterValues(“国家”);
字符串zip=request.getParameter(“zip”);
字符串email=request.getParameter(“email”);
字符串male=request.getParameter(“male”);
字符串female=request.getParameter(“female”);
字符串langs[]=request.getParameterValues(“lang”);
如果(name.isEmpty()| user.isEmpty()| password.isEmpty()| address.isEmpty()| countries.length==0 | | zip.isEmpty())||
email.isEmpty()| |男==null | |女==null | | langs.length==0)
{
m=“请输入所有数据”;
增加(m);
}
其他的
{
m=“名称:”+名称;
增加(m);
}
}
processRequest(请求、响应);
getServletContext().getRequestDispatcher(url).forward(请求,响应);
}
/**
*处理HTTP
POST
方法。 * *@param请求servlet请求 *@param response servlet response *如果发生特定于servlet的错误,@将引发ServletException *@在发生I/O错误时引发IOException */ @凌驾 受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应) 抛出ServletException、IOException{ 尝试(PrintWriter out=response.getWriter()){ /*TODO在此处输出您的页面。您可以使用以下示例代码*/ 字符串newmsg=“”; 用于(对象li:列表){ newmsg+=li; } out.println(“”); out.println(“”); out.println(“”); println(“Servlet成员控制服务”); out.println(“”); out.println(“”); out.println(“+newmsg+”); out.println(“”); out.println(“”); }
和xml文件:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>MembershipControllerServlet</servlet-name>
        <servlet-class>edu.uncc.nbad.MembershipControllerServlet</servlet-class>
    </servlet>


     <servlet-mapping>
        <servlet-name>MembershipControllerServlet</servlet-name>
        <url-pattern>/membership</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
       <welcome-file>signup.jsp</welcome-file>
    </welcome-file-list>

</web-app>


会员控制器服务
edu.uncc.nbad.MembershipControllerServlet
会员控制器服务
/会员资格
30
signup.jsp
最后,signup.jsp:

<!DOCTYPE html>
<head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <link rel="stylesheet" href="style.css" />
    </head>
    <body>
        <h1>Registration Form</h1>

        <form method = "post" action = "/Lab3-Hitz-Herron/membership?action=signup">
            <label>Name</label><input class = 'box' type = 'text' name = "name"><br />
            <label>UserName:</label><input class = 'box' type = 'text' name =
            "userName"><br />
            <label>Password: </label><input class = 'box' type = 'text' name =
            "password"><br />
            <label>Address:</label><input class = 'box' type = 'text' name =
            "address"><br />
            <label>Country:</label>
            <select class= "box" name = 'countries'>
                <option value="USA">USA</option>
                <option value="OTHER">Other</option> </select
            ><br />
            <label>Zip Code:</label> <input class="box" type="text" name ="zip" /><br />
            <label>Email: </label> <input class="box" type="email" email namd ="email" /><br />
            <label>Sex: </label> <input type="radio" name="gender" value="male" name ="male" />Male
            <input type="radio" name="gender" value="female" name = "female"/>Female<br />
            <label>Language:</label>
            <input type="checkbox" name="language" value="English" name ="lang" />English
            <input type="checkbox" name="language" value="French" name ="lang"/>French
            <input type="checkbox" name="language" value="German" name ="lang" />German <br />
            About:
            <textarea name = "about"></textarea><br />
                        <button type="submit" >Submit</button>
        </form>
    </body>
</html>

文件
登记表
名称
用户名:
密码:
地址:
国家: 美国 其他
邮政编码:
电子邮件:
性别:男 女性
语言: 英语 法语 德语
关于:
提交
TL;DR

永远不要这样做


此实现存在一个称为竞争条件的并发性问题,因为该列表将在线程之间共享。

如何使用代码?参数是什么?请记录:将该列表设置为静态很可能是错误的。或者您真的希望该服务的所有实例都使用相同的列表吗那就是:当你对Java生疏时,你应该从比servlet编程更具挑战性的项目开始。删除列表。从if块if(name.isEmpty()| user.isEmpty()| password.isEmpty()| address.isEmpty()| countries.length==0 | zip.isEmpty()| email.isEmpty())| |男==null | | |女==null | | | langs.length==0){m=“请输入所有数据”列表。添加(m)}还有,您是如何调用或映射控制器的。根据我的理解,您的列表相关代码很好。您只需要删除list.add()从if block.List将有数据。空列表应该是您的请求映射的问题。您使用的是bean或应用程序的原型范围吗context@SSP感谢你的洞察力,我考虑了它是否在if块中会影响它。另外,我不确定你说的原型或应用程序上下文是什么意思?我是一名学生,在一个他是我的第一份作业,所以我对这个主题缺乏太多的知识。我们得到了一份模糊的指导文件,并被告知按照步骤进行操作,但几乎没有解释我们实际在做什么。