java面向对象、集合基础资料
程序员文章站
2022-03-09 21:37:33
...
web.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="" xmlns="" xsi:schemaLocation id="WebApp_ID" version="2.5"><display-name>WEB_Servlet14</display-name>
<display-name>项目名字</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>
</web-app>
2.context对象
<!-- 对象键值对的形式 -->
<context-param>
<param-name>contextParam</param-name>
<param-value>hello bigjava</param-value>
</context-param>
3.配置servlet访问
<servlet>
<!-- 类的名字 -->
<servlet-name>Login</servlet-name>
<!-- 对应src的路径 -->
<servlet-class>com.item.servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<!-- 对应上头servlet名字 -->
<servlet-name>Login</servlet-name>
<!-- 访问带的路径 -->
<url-pattern>/login</url-pattern>
</servlet-mapping>
2.JSP
小脚本: <% %>
表达式: <%= %>
声明: <%! %>
指令: <%@ %>
注释: <%-- --%>
jsp内置对象
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
page JSP网页本身
// 设置字符编码
request.setCharacterEncoding("utf-8");
resoponse对象常用方法
// 返回中文不乱码
response.setContentType("text/html;charset=UTF-8");
void sendRedirect(String location)重新定位到一个不同的url
request.getRequestDispatcher("welcome.jsp").forward(request, response);
转发以后跳转地址不变夸页面传递数据,重定向地址栏会变
常用方法
方法名称 | 描述 |
---|---|
setAttribute(String key,Object value) | 以key/value的试保存 |
Object getAttribute(String key) | 获取值 |
void invalidate() | 设置session对象失效时间 |
String getId() | 获取sessionid |
void setMaxInactiveInterval(int interval) | 设定session的非活动时间 |
void setMaxInactiveInterval(int interval) | 设定session的非活动时间 |
intgetMaxInactiveInterval() | 获取session的有效非活动时间(以秒为单位) |
void removeAttribute(String key) | 从session中删除指定名称(所对应的对象) |
方法名
void setAttribute(Stringkey,Object value)
Object getAttribute(String key)
String getRealPath(String path) 相对地址,的真实路径
创建cookie对象
Cookie newCookie=new Cookie(String key,Object value);
写入cookie
respone.addCookie(newCookie);
读取cookie
Cookie[] cookies = request.getCookies();
void setMaxAge(int expiry) 设置cookie 有效时间,秒为单位
void setValue(String value) 在cookie创建后,对cookie进行赋值
String getName() 获取cookie的值
String getValue() 获取cookie的值
String getMaxAge() 获取cookie的有效时间秒为单位
public String getInitParameter(String name) 获取名称为name的系统范的初始化参数,<context-param>
public void setAttribute(String name,Object object) 数组名称为name的属性
public Object getAttribute(String name) 获取名称name的属性
public String getRealPath(String path) 放回目录的真实路径
public void log(String message) 日志信息
Servlet
void init (ServletConfig config)
由servlet容器调用,用于完成Servlet对象在处理客户请求初始化
void service(ServletRequest req, ServletResponse res)
由servlet容器调用,用来处理客户端请求
void destroy ()
由servlet容器调用,释放Servle对象所有使用资源
void ServletConfiggetServletConfig()
返回ServletConfig对象,该对象包含此servlet的初始化和启动参数,
放回ServletConfig对象是传递给init()方法的对象。
void doGet(HttpServletRequest request, HttpServletResponse response)
用于doGet请求
void doGet(HttpServletRequest request, HttpServletResponse response)
用于doPet请求
字符串(StringBuffer)
StringBuilder类的常用方法
A:构造方法:
StringBuilder()
B:成员方法:
public int capacity():返回当前容量 (理论值)
public int length():返回长度(已经存储的字符个数)
public StringBuilder append(任意类型):添加数据,并返回自身对象
public StringBuilder reverse():反转功能
public String toString():转换成字符串功能
用法:
StringBuffer sb = new StringBuffer();
sb.append("hello").append("World");
System.out.println(sb);
ArrayList
add(element); 添加元素
A:获取元素
public E get(int index):返回指定索引处的元素
B:集合长度
public int size():返回集合中的元素的个数
C:删除元素
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
D:修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
ArrayList<String> array = new ArrayList<String>();
List<String> list = new ArrayList<>(); // 类似于ArrayList
array.add("hello");
//public E get(int index):返回指定索引处的元素
System.out.println("get:"+array.get(0));
//public int size():返回集合中的元素的个数
System.out.println("size:"+array.size());
//public boolean remove(Object o):删除指定的元素,返回删除是否成功
System.out.println("remove:"+array.remove("world"));//true
System.out.println("remove:"+array.remove("world"));//false
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
System.out.println("remove:"+array.remove(0));
// ArrayList遍历
for(int i=0; x<array.size(); i++) {
String str = array.get(i);
System.out.println(str);
}
HashSet
规则:
新添加到HashSet集合的元素都会与集合中已有的元素一一比较
首先比较哈希值(每个元素都会调用hashCode()产生一个哈希值)
如果新添加的元素与集合中已有的元素的哈希值都不同,新添加的元素存入集合
如果新添加的元素与集合中已有的某个元素哈希值相同,
此时还需要调用equals(Object obj)比较
如果equals(Object obj)方法返回true,
说明新添加的元素与集合中已有的某个元素的属性值相同,那么新添加的元素不存入集合
如果equals(Object obj)方法返回false,
说明新添加的元素与集合中已有的元素的属性值都不同, 那么新添加的元素存入集。
使用HashSet存储自定义对象并遍历
通过查看源码发现:
HashSet的add()方法,首先会使用当前集合中的每一个元素和新添加的元素进行hash值比较,
如果hash值不一样,则直接添加新的元素
如果hash值一样,比较地址值或者使用equals方法进行比较
比较结果一样,则认为是重复不添加
所有的比较结果都不一样则添加
HashSet<Student> hs = new HashSet<Student>();
//创建元素对象
Student s = new Student("zhangsan",18);
Student s2 = new Student("lisi",19);
Student s3 = new Student("lisi",19);
//添加元素对象
hs.add(s);
hs.add(s2);
hs.add(s3);
//遍历集合对象
for (Student student : hs) {
System.out.println(student);
}
HashMap<K, V> map = new HashMap<>();
HashSet<T> set = new HashSet<>();
LinkedList<> link = new LinkedList<>();
HashMap
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储
B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
C:Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
Map常用功能
A:映射功能:
V put(K key, V value) :以键=值的方式存入Map集合
B:获取功能:
V get(Object key):根据键获取值
int size():返回Map中键值对的个数
C:判断功能:
boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对
boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
boolean isEmpty():判断Map集合中是否没有任何键值对
D:删除功能:
void clear():清空Map集合中所有的键值对
V remove(Object key):根据键值删除Map中键值对
E:遍历功能:
Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回
Set<K> keySet() :将Map中所有的键装到Set集合中返回
Collection<V> values():返回集合中所有的value的值的集合
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//V put(K key, V value) :就是将key映射到value,如果key存在,则覆盖value,并将原来的value返回
System.out.println(map.put("ITCAST001", "张三"));
System.out.println(map.put("ITCAST002", "李四"));
System.out.println(map.put("ITCAST001", "王五"));
//void clear() : 清空所有的对应关系
//map.clear();
//V remove(Object key) :根据指定的key删除对应关系,并返回key所对应的值,如果没有删除成功则返回null
System.out.println(map.remove("ITCAST005"));
boolean containsKey(Object key) // 判断指定key是否存在
System.out.println(map.containsKey("ITCAST003"));
boolean containsValue(Object value) // 判断指定的value是否存在
System.out.println(map.containsValue("王五"));
//boolean isEmpty() : 判断是否有对应关系
System.out.println(map.isEmpty());
//int size() : 返回对应关系的个数
System.out.println(map.size());
//V get(Object key) : 根据指定的key返回对应的value
System.out.println(map.get("ITCAST002"));
// 输出
System.out.println(map);
Map的两种遍历方式
Map<String,String> map = new HashMap<String,String>();
//添加映射关系
map.put("001", "Sary");
map.put("002", "Joing");
map.put("003", "Tong");
//遍历Map对象
// 拿出学号
Set<String> keys = map.keySet();
for (String key : keys) {
String value = map.get(key);
System.out.println("学号:" + key + "---" + "姓名:" + value);
}