Java 覆盖函数未更新全局变量
我在让doGet的覆盖函数更新全局arrayList变量“list”时遇到了一个问题,这样我就可以在doPost函数中对其进行迭代。我对java有些生疏,因为我已经有一段时间没有使用它了,所以我除了怀疑它与我使用重写函数的事实有关外,似乎找不到其他问题。感谢您的帮助,代码如下Java 覆盖函数未更新全局变量,java,Java,我在让doGet的覆盖函数更新全局arrayList变量“list”时遇到了一个问题,这样我就可以在doPost函数中对其进行迭代。我对java有些生疏,因为我已经有一段时间没有使用它了,所以我除了怀疑它与我使用重写函数的事实有关外,似乎找不到其他问题。感谢您的帮助,代码如下 公共类MembershipControllerServlet扩展了HttpServlet{ public static ArrayList list=new ArrayList(); @凌驾 受保护的void doGet(
公共类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(请求,响应);
}
/**
*处理HTTPPOST
方法。
*
*@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块中会影响它。另外,我不确定你说的原型或应用程序上下文是什么意思?我是一名学生,在一个他是我的第一份作业,所以我对这个主题缺乏太多的知识。我们得到了一份模糊的指导文件,并被告知按照步骤进行操作,但几乎没有解释我们实际在做什么。