请问不相同的key值,Map添加值的时候还是覆盖了?

请问不相同的key值,Map添加值的时候还是覆盖了?

web.xml

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Libary</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>InitServlet</display-name>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>Servlet.InitServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>InitServlet</servlet-name>
    <url-pattern>/InitServlet</url-pattern>
  </servlet-mapping>
  
  <filter>
  	<filter-name>OneFilter</filter-name>
  	<filter-class>Filter.One</filter-class>
  	
  	<init-param>
  		<param-name>charSet</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>OneFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
package Servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import User.User;

/**
 * Servlet implementation class InitServlet
 */

public class InitServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	public void init() throws ServletException {
		//	创建一个User集合类用于保存用户集合
		List<User> UserList = new ArrayList<User>();
		
		//	将集合保存在ServletContext域中
		this.getServletContext().setAttribute("list",UserList);
	}

}
package Servlet;

import java.io.IOException;
import java.util.List;

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

import User.User;

/**
 * Servlet implementation class RegistServlet
 */
@WebServlet("/RegistServlet")
public class RegistServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获得注册页面的相关信息
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String checkPWD = request.getParameter("checkPWD");
		String phone = request.getParameter("phone");
		String email = request.getParameter("email");
		
		//进行后台验证  防止吊毛用户在前端删除验证方式
		String usernameRegex = "[a-zA-Z_0-9]{6,12}";
		boolean flag1 = username.matches(usernameRegex);
		String passwordRegex = "[0-9]{6,12}";
		boolean flag2 = password.matches(passwordRegex);
		String phoneRegex = "1[34578][0-9]{9}";
		boolean flag3 = phone.matches(phoneRegex);
		String emailRegex = "[a-zA-Z_0-9]{6,}@([a-zA-Z]+ | \\d+)(\\.[a-zA-Z]+)+";
		boolean flag4 = email.matches(emailRegex);
		System.out.println(username);
		System.out.println(password);
		System.out.println(checkPWD);
		System.out.println(phone);
		System.out.println(email);
	
		if(flag1==false && flag2==false && flag3==false && flag4==false) {
			//不符合注册条件,进行重定向并且转发数据
			response.sendRedirect(request.getContextPath()+"/regist.jsp?flag=1");
		}else {
			//将符合的信息存储在User中  
			User user = new User();
			user.setUsername(username);
			user.setPassword(password);
			user.setEmail(email);
			user.setPhone(phone);
			
			// 将User存入集合中
			List<User> UserList = (List<User>)this.getServletContext().getAttribute("list");
			UserList.add(user);
			this.getServletContext().setAttribute("UserList", UserList);
			
			//然后进行页面跳转
			response.sendRedirect(request.getContextPath()+"/index.jsp?flag=1");
			
		}	
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
package Servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import User.User;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		//获得集合
		List<User> UserList = (List<User>) this.getServletContext().getAttribute("UserList");
	
		//判断
		for(User u : UserList) {
			if(u.getUsername().equals(username) && u.getPassword().equals(password)) {
				//进行页面跳转
				request.getSession().setAttribute("username", username);
				response.sendRedirect(request.getContextPath()+"/server.jsp");
			}else{
				//页面跳转
			}
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}
package Servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

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

/**
 * Servlet implementation class CatgoryServlet
 */
@WebServlet("/CatgoryServlet")
public class CatgoryServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");
		String catgoryName = request.getParameter("catgoryName");
		String description = request.getParameter("description");
		
		//创建Map集合来存储catgoryName key-id value-catgoryName
		Map<String,String> map = new HashMap<String,String>();
		map.put(id, catgoryName);
		
		this.getServletContext().setAttribute("map", map);
		
		Map<String,String> maps = (Map<String, String>) this.getServletContext().getAttribute("map");
		for(String key : maps.keySet()) {
			System.out.println(key+"==="+maps.get(key));
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	String flag = request.getParameter("flag");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta charset="UTF-8">
<title>图书馆管理系统首页</title>
<script type="text/javascript">
	var flag = <%=flag%>;
	if(flag == 1){
		alert("注册成功!");
	}
	
</script>
</head>
<body>
	<center>
		<h1>登录 | <a href="<%=basePath%>regist.jsp">注册</a></h1>
		<form action="<%=basePath%>/LoginServlet" method="post">
			<table width="350px" cellspacing="0px" cellpadding="0px" border="1px">
				<tr>
					<td>用户名</td>
					<td><input type="text" name="username" placeholder="用户名为3-12位字母数字或下划线组合" ></td>
				</tr>
				<tr>
					<td>密&nbsp;码</td>
					<td><input type="password" name="password" placeholder="长度为6-12位的纯数字" ></td>
				</tr>
				<tr>
					<td colspan="2" style="text-align:center">
						<input type="submit" value="登录">
						<input type="reset" value="取消">
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";	
	String flag = request.getParameter("flag");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<script type="text/javascript">
	function mk(){
		 var id1 = document.getElementById("password").value;
		 var id2 = document.getElementById("password2").value;
		if(id1==id2){
			
		}else{
			alert("两次密码不相同!");
		}
		
	}
	var flag = <%=flag%>;
	if(flag ==1 ){
		alert("注册信息不正确!");
	}
</script>
	<center>
		<h1>用户注册</h1>
		<form action="<%=basePath%>RegistServlet" method="post">
			<table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
				<tr>
					<td>用户名</td>
					<td><input type="text" name="username" placeholder="用户名为3-12位字母数字或下划线组合" pattern="[a-zA-Z_0-9]{3,12}"></td>
				</tr>
				<tr>
					<td>密&nbsp;码</td>
					<td><input type="password" name="password" placeholder="密码长度为6-12位的纯数字"  id="password" pattern="[0-9]{6,12}"></td>
				</tr>
				<tr>
					<td>确认密码</td>
					<td><input type="password" name="checkPWD" placeholder="密码长度为6-12位的纯数字" id="password2" pattern="[0-9]{6,12}"></td>
				</tr>
				<tr>
					<td>手机号码</td>
					<td><input type="text" name="phone" placeholder="请输入正确的手机号码格式" onclick="mk()" pattern="1[34578][0-9]{9}"></td>
				</tr>
				<tr>
					<td>邮箱</td>
					<td><input type="email" name="email" placeholder="请输入正确邮箱格式" required="required"></td>
				</tr>
				<tr>
					<td colspan="2" style="text-align:center">
						<input type="submit" value="注册">
						<input type="reset" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>图书后台管理系统</title>
</head>
<frameset rows="20%,*">
	<frame src="./top.jsp"></frame>
	<frameset cols="10%,*">
		<frame src="./left.jsp"></frame>
		<frame name="main"></frame>
	</frameset>
</frameset>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String name = (String)request.getSession().getAttribute("username");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<h1>
			图书后台管理系统<span style="font-size:12px">您好,<%=name %>
		</h1>
	</center>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p><a href="<%=basePath%>/catgory.jsp" target="main">分类添加</a></p>
	<p><a href="<%=basePath%>/addbook.jsp" target="main">图书添加</a></p>
	<p><a href="<%=basePath%>/show.jsp" target="main">图书查询</a></p>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";	
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>图书分类添加</title>
</head>
<body>
	<center>
		<h1>图书分类添加</h1>
		<form action="<%=basePath%>/CatgoryServlet" method="post">
			<table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
				<tr>
					<td>分类ID</td>
					<td><input type="text" name="id"></td>
				</tr>
				<tr>
					<td>名&nbsp;字</td>
					<td><input type="text" name="catgoryName"></td>
				</tr>
				<tr>
					<td>描&nbsp;述</td>
					<td><input type="text" name="description"></td>
				</tr>
				<tr>
					<td colspan="2" style="text-align:center">
						<input type="submit" value="添加">
						<input type="reset" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	
	Map<String,String> maps =(Map<String,String>) this.getServletContext().getAttribute("map");
 %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>图书添加</title>
</head>
<body>
	<center>
		<h1>图书添加</h1>
		<form action="<%=basePath%>/AddBookServlet" method="post">
			<table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
				<tr>
					<td>图书ID</td>
					<td><input type="text" name="id" placeholder="请输入数字" pattern="\d+" required="required"></td>
				</tr>
				<tr>
					<td>图书名</td>
					<td><input type="text" name="bookName"></td>
				</tr>
				<tr>
					<td>图书分类</td>
					<td>
						<select name="catgoryName">
								<%
									for(String key : maps.keySet()){
										%>
											<option value="<%=maps.get(key) %>"><%=maps.get(key)%></option>
										<%
									}
								%>
						</select>
					</td>
				</tr>
				<tr>
					<td>价格</td>
					<td><input type="text" name="price" placeholder="请输入价格" ></td>
				</tr>
				<tr>
					<td>描述</td>
					<td><input type="text" name="description" placeholder="请输入描述信息"></td>
				</tr>
				<tr>
					<td colspan="2" style="text-align:center">
						<input type="submit" value="添加">
						<input type="reset" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>

其他页面没有抒写业务逻辑就不贴出来了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿莹 2018-11-01 18:28:36

首先在map中不同的key值不会被覆盖,

不过,同学可以把域想象成一个Map 。同一个key值只能存一个 value,所以,每次往域中key为“map”中存时,会覆盖上次存的map。例如你的代码:

 this.getServletContext().setAttribute("map", map);

如果再来一个map,就会把之前的存的覆盖掉了。

所以,

1、我们可以在全局设置一个 List

public static List<Map<String ,String>> mapList = newArraryList<Map<String ,String>>();

2、

然后我们把id,catgoryName,description 等都存到新创建的map中。

Map<String,String> map = new HashMap<String,String>();
        map.put(“id”,id );
        map.put(“catgoryName”,catgoryName );
        map.put(“description ”,description  );

3、把这个创建好的map (一个分类) 放到 mapList  中去。

mapList.add(map);

4、最后我们再把这个mapList集合放到域中,可以起名叫 mapList

this.getServletContext().setAttribute("mapList", mapList);

这样,每次放一个分类在里边,都可以存在这个mapList,中了。

可以遍历mapList,就可以获取所以添加的类了。

5、建议同学把这个过程放到Dao的实现类中,写成一个方法,在Servlet中,直接调用这个方法,把获取的这几个参数传递给这个方法就可以了。实现了代码的分成,比较清晰。


如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


好帮手慕阿莹 2018-11-01 14:47:36

没明白同学的意思,同学是指哪个Map,哪段代码呢?请同学详细描述一下你的问题。

祝学习愉快


  • 提问者 JavaNice #1
    图书添加功能 //创建Map集合来存储catgoryName key-id value-catgoryName Map<String,String> map = new HashMap<String,String>(); map.put(id, catgoryName);
    2018-11-01 15:19:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师