Userservlet登录数据处理,包括访问页面次数处理:

package com.szxy.test;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; public class Uservlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");//请求编码格式
resp.setContentType("text/html;charset=utf-8");//响应编码格式
String uname = req.getParameter("uname");
String pwd = req.getParameter("pwd");
//创建session
HttpSession session = req.getSession(); if ("yxf".equals(uname)&&"wangjing".equals(pwd)) {
//先获取公共资源对象
ServletContext sc = this.getServletContext();
Object obj1 = sc.getAttribute("nums");
Object obj2 = sc.getAttribute("number");
if (obj1!=null) {
int nums=(Integer) obj1;
nums++;
sc.setAttribute("nums", nums);
} else {
sc.setAttribute("nums", 1);
} if (obj2!=null) {
int number=(Integer) obj2;
number++;
sc.setAttribute("number", number);
} else {
sc.setAttribute("number", 1);
}
//登录成功,将uname放入session中
session.setAttribute("uname", uname);
resp.sendRedirect("index");
}else {
//创建标记,将标记放在session中
session.setAttribute("false", "loginfalse");
resp.sendRedirect("dl");
// req.getRequestDispatcher("dl").forward(req, resp);
return;
}
}
}

NumberServlet:将访问页面次数储存,初始化页面的时候从文件取出次数,关闭服务器的时候,保存次数。

package com.szxy.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; public class NumberServlet extends HttpServlet {
@Override
public void init() throws ServletException {
//先获取公共资源
ServletContext sc = this.getServletContext();
//获取计数器文件位置(文件的绝对路径,动态获取)
String path = sc.getRealPath("number/num.txt");
//获取文件
File file=new File(path);
//读取文件流对象
FileInputStream fis=null;
InputStreamReader isr=null;
BufferedReader br=null;
try {
fis=new FileInputStream(file);
isr=new InputStreamReader(fis);
br=new BufferedReader(isr);
//获取计数器公共资源
String number = br.readLine();
System.out.println("-----------------"+number+"-------------");
//将数据存储到公共资源中
sc.setAttribute("number",Integer.parseInt(number));
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
isr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} @Override
public void destroy() {
//先获取共享资源对象
ServletContext sc = this.getServletContext();
// 获取计数器
int number = (Integer)sc.getAttribute("number");
//获取计数器文件位置(文件的绝对路径,动态获取)
String path = sc.getRealPath("number/num.txt");
//将计数器存储到文件中
File file=new File(path);
//获取资源的流对象
BufferedWriter bw=null;
OutputStreamWriter osw=null;
FileOutputStream fos=null;
try {
fos=new FileOutputStream(file);
osw=new OutputStreamWriter(fos);
bw=new BufferedWriter(osw);
//将资源写入文件中
bw.write(number+"");
//刷新
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
osw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
}

IndexServlet登录成功页面:

package com.szxy.test;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; public class IndexServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8"); //获取公共资源对象
ServletContext sc = this.getServletContext();
int num =(Integer)sc.getAttribute("nums");
int n = (Integer)sc.getAttribute("number");
resp.getWriter().write("<html>");
resp.getWriter().write("<head>");
resp.getWriter().write("</head>");
resp.getWriter().write("<body>");
resp.getWriter().write("<h1 >欢迎"+req.getSession().getAttribute("uname")+"登录成功</h1>");
resp.getWriter().write("<h4 align=right>当前在线人数:"+num+"</h4>");
resp.getWriter().write("<h4 align=right>页面被访问:"+n+"次</h4>");
resp.getWriter().write("<hr/>");
resp.getWriter().write("</body>");
resp.getWriter().write("</html>");
}
}

DLuServlet 登录界面:

package com.szxy.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; public class DLuServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8"); HttpSession session = req.getSession();
String str = (session.getAttribute("false")==null?"":"用户名或密码错误");
session.invalidate();
resp.getWriter().write("<html>");
resp.getWriter().write("<head>");
resp.getWriter().write("</head>");
resp.getWriter().write("<body>");
resp.getWriter().write("<form action='user' method='post'/>");
resp.getWriter().write("<font color='red'>"+str+"</font>");
resp.getWriter().write("<br/>");
resp.getWriter().write("用户名:<input type='text' name='uname' value='' /><br/>");
resp.getWriter().write("密码:<input type='password' name='pwd' value='' /><br/>");
resp.getWriter().write("<input type='submit' value='登录' />");
resp.getWriter().write("</body>");
resp.getWriter().write("</html>");
}
}

servlet登录练习,并且记录访问次数的更多相关文章

  1. JSP+Servlet+JavaBean统计页面在线访问次数

    统计页面浏览次数:使用的是servlet实现统计次数传递给JSP页面 说明:我做的都比较接地气,意思就是比较简单! 效果图如下: 上代码 counter.java(它真的好简单,啥事不干,只是定义一个 ...

  2. 使用java中的session来记录访问次数

    <%@ page import="java.net.CookieHandler" %><%-- Created by IntelliJ IDEA. User: D ...

  3. Java web--Filter过滤器分IP统计访问次数

    分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建 ...

  4. Servlet访问路径的两种方式、Servlet生命周期特点、计算服务启动后的访问次数、Get请求、Post请求

    Servlet访问路径的两种方式: 1:注解 即在Servlet里写一个@WebServlet @WebServlet("/myServlet") 2:配置web.xml < ...

  5. 从大量的IP访问记录中找到访问次数最多的IP

    1.内存不受限 一个IP有32bit(4Byte),1GB=10亿,那么在4GB内存的情况下,可以存10亿个IP.用HashMap,边存入IP边维护一个最大次数,这样遍历一遍就可以求出,时间复杂度为O ...

  6. web_02Java ee实现验证码,网站访问次数功能

    Web Web_02版本: 实现功能 1,验证码 2,网站访问次数统计 设计内容 1,servlet 2,jsp 3,js *重点 1,验证码相关: 1,Servlrt类实现验证码的生成 CheckC ...

  7. JFinal使用笔记3-注册和登录功能开发记录

    首页 开源项目 问答 代码 博客 翻译 资讯 移动开发 招聘 城市圈 当前访客身份:游客 [ 登录 | 加入开源中国 ]   当前访客身份: 游客 [ 登录 | 加入开源中国 ] 软件   土龙 关注 ...

  8. java:(九大内置对象,计算服务器访问次数,filter过滤器,MVC框架,MVC和三层架构的关系)

    1.九大内置对象: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  9. 学习笔记_过滤器应用_1(分ip统计网站的访问次数)

    分ip统计网站的访问次数 ip count 192.168.1.111 2 192.168.1.112 59 统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做 ...

随机推荐

  1. 创建windows系统下的虚拟机

    创建新的虚拟机  添加映像(windows系统下必须先添加映像) 选择相应的镜像文件:网上查找密钥输入:版本按要求选择:单击 下一步:设置虚拟机名称  位置 :下一步 默认的磁盘大小(不用管)——下一 ...

  2. python经典算法面试题1.5:如何找出单链表中的倒数第K个元素

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [微软笔试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐⭐ 题目描 ...

  3. Linux访问控制列表

    首先我们来了解下权限,在Linux里常规的权限有r(读)w(写)x(执行),特殊权限有SUID,SGID,Sticky权限,分别作用在文件(或目录)的所有者,所属组和其他(既不是所有者,也不是所属组的 ...

  4. Angular前端优化思路

    简单总结接下我这边angular前端优化步骤都是满满的干货,各位客官有好的改进欢迎留言~ 1. 动静分离 项目里面前端比较占用带宽的一般都是加载静态资源,请求后台接口一般占用带宽都是1kb左右,但是在 ...

  5. jquery正确获取iframe里元素的方法

    <iframe id="_ae_frame" width="100%" height="100%" frameborder=" ...

  6. glsl shader简明教程系列1

    glsl shader简明教程系列1 底层的东西我就不说了(自己去百度翻基础教程)  我直接说上层了(片段着色器) web编辑器还在开发中 有了编辑器 到时候可以把代码复制上去可以看到效果了 1  实 ...

  7. java笔试面试第二天

    没想到第二次面试到了第二周,也是我在上海找工作的第二周,说实话,没有真本事找工作是真的难,虽然正在召开的十九大上,大大们纷纷表态国力正盛,经济稳步增长,就业压力逐渐缓解,但是社会终究是社会,要么靠实力 ...

  8. [LC]530题 二叉搜索树的最小绝对差

    ①题目 给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值. 示例 : 输入: 1   \   3  / 2 输出:1 解释:最小绝对差为1,其中 2 和 1 的差的绝对值为 ...

  9. 关键路径法(Critical Path Method, CPM)

    1.活动节点描述及计算公式 通过分析项目过程中哪个活动序列进度安排的总时差最少来预测项目工期的网络分析. 产生目的:为了解决,在庞大而复杂的项目中,如何合理而有效地组织人力.物力和财力,使之在有限资源 ...

  10. 在lldb调试中调用c++函数 - 如何使用QuartzCore里面的日志消息

    承接上一篇,上一篇讲到可以在lldb调试中调用QuartzCore.framework里的CA::Render::Object::show方法来是观察CA::Render模块内的类的信息,但是在lld ...