二、一个显示所有访问者的IP及访问次数的Servlet
运用的知识点如下:
1、存储IP使用什么类型比较好?这个变量定义在哪里比较好?
2、复习了HashMap的迭代知识
代码如下:
用HashMap统计IP的访问次数
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IpList extends HttpServlet {
private Map map = new HashMap();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String ip = request.getRemoteAddr();
int time = 0;
if(map.containsKey(ip)) {
time = Integer.parseInt((String) map.get(ip));
}
time++;
map.put(ip, Integer.valueOf(time).toString());
Set ipset = map.keySet();
Iterator iter = ipset.iterator();
while(iter.hasNext()) {
String ip1 = (String)iter.next();
out.println(ip1 + ":" + map.get(ip1) + "<br>");
}
out.flush();
out.close();
}
}
三、servlet的线程安全问题
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;
public class ServletThread extends HttpServlet {
private int count = 0;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
synchronized (this) {
count++;
try {
Thread.sleep(500);
} catch (Exception e) {
// TODO: handle exception
}
System.out.println(count + "访问" + Thread.currentThread());
}
}
}
四、相对路径和绝对路径
1、web应用程序中指定相对和绝对路径
(1)服务器的根 http://localhost:8080/
(2)web工程(web应用程序)的根 http://localhost:8080/Test/
几个常用的与路径有关的方法的相对路径和绝对路径的总结:
Html文件中的链接 开头有/(绝对路径) http://localhost:8080/
开头无/(相对路径) Html文件自身所在的路径
servlet(URL)Request.getRequestDispatcher(URL)
只能转发到本web应用程序 开头有/(绝对路径) http://localhost:8080/Test/
开头无/(相对路径) 相对于Servlet的映射路径
ServletContext.getRequestDispatcher(URL)
可转发到本服务器其他web应用程序 开头有/(绝对路径) http://localhost:8080/Test/
开头无/(相对路径) 不能使用
Response.sendRedirect(URL)
可以重定向到任何URL 开头有/(绝对路径) http://localhost:8080/
开头无/(相对路径) 相对于Servlet的映射路径
2.请求转发与请求重定向的区别
请求转发 请求重定向
浏览器发出请求 一次 两次
能不能得到请求参数 能. 不能
地址栏的变化 不变 变
目的地的范围 本服务器内的WEB应用程序 也可以是其它服务器主机
分享到:
相关推荐
完美日记爆款打造路径
动力节点王勇老师的DRP项目培训日记,绝对经典!
营销系统员工培训日记.doc
SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2
唐骏日记,唐骏日记唐骏日记,唐骏日记唐骏日记,唐骏日记唐骏日记,唐骏日记
移动日记本功能包含传统的日记本和音频日记视频日记实现私密日记和普通日记。.zip
SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1SAP 日记1
微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信...
本软件起到了一个个人日记的功能。 日记记录的内容全部存放在tool\5b\artdiary.gtz下面,如果记录数量比较多的情况下,可以手工备份此文件,以免以外情况下丢失数据。 日记中的心情与天气,可以选择,也可以手工...
8、日记站首页分几大栏目:最新日记、佳作推荐、最新日记本、日记本排行、日记搜索、我的日记和服务中心等。 9、日记站后台管理目录为a,访问请直接用"域名/a",a目录可随意命名。建议后台管理目录。 10、日记后台...
[程序员实习日记大全]java程序员实习日记多篇.docx[程序员实习日记大全]java程序员实习日记多篇.docx[程序员实习日记大全]java程序员实习日记多篇.docx[程序员实习日记大全]java程序员实习日记多篇.docx[程序员实习...
青春日记多用户网络日记程序是一个漂亮精致的网络日记本,它界面美观、功能丰富、使用方便,包含了用户登录注册、日记本排行、日记搜索、日记管理、留言评论等功能,还有音乐播放、时钟日历、愿望小寺等小功能。...
基于Android平台的路径日记系统开发与设计.pdf
小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小...
c#初学日记c#初学日记c#初学日记c#初学日记c#初学日记c#初学日记c#初学日记c#初学日记
记事本个人日记记事本个人日记记事本个人日记
(微信小程序毕业设计)小熊日记(源码+截图)(微信小程序毕业设计)小熊日记(源码+截图)(微信小程序毕业设计)小熊日记(源码+截图)(微信小程序毕业设计)小熊日记(源码+截图)(微信小程序毕业设计)小熊日记(源码+截图)(微信...
这是一款仿真日记,也是我个人认为最优秀的日记。(用过效能日记等日记软件,但没有一款符合我心意,惟独这款日记深得我心) 喜欢写日记的人可以尝试,相信你们也会认同我的观点并喜欢上这款日记。 这是我最爱的一...
青春日记多用户网络日记程序是一个漂亮精致的网络日记本,它界面美观、功能丰富、使用方便,包含了用户登录注册、日记本排行、日记搜索、日记管理、留言评论等功能,还有音乐播放、时钟日历、愿望小寺等小功能。...
日记人多用户网络日记程序是一个漂亮精致的网络日记本,它界面美观、功能丰富、使用方便,包含了用户登录注册、日记本排行、日记搜索、日记管理、留言评论等功能,还有音乐播放、时钟日历、愿望小寺等小功能。...