servlet登录练习,并且记录访问次数

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>");
	}
}

posted @ 2019-12-11 08:56  sakura-yxf  阅读(240)  评论(0)    收藏  举报