MyServlet的简单应用

例子为一个登陆查询界面,只实现功能

主页面

网页部分

<!DOCTYPE html>	

<html>

<head>
	<meta charset="UTF-8">
	<title>窗口页签标题</title>
</head>

<body>
	<a href="login.html">登陆</a>
	<h1>页面</h1>
	<form action="MyServlet">
		<select name="type">
			<option value="fruit">水果</option>
			<option value="student">学生</option>
		</select>
		<button>查询</button>
	</form>
</body>

</html>

java部分

package com.abc;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

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


@WebServlet("/MyServlet")							//注解,html请求myservlet
public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public MyServlet() {
        
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String type=request.getParameter("type");	//获取参数
		System.out.println("收到的参数type为"+type);	//控制台输出参数
		
		request.setCharacterEncoding("UTF-8");			//服务器编码
		
		response.setContentType("text/html;charset=utf-8");//浏览器编码
		
		java.io.PrintWriter out=response.getWriter();	//定义输出流
		out.println("<html>");							//html代码块
		out.println("<head>");
		out.println("<meta charset=\"UTF-8\">");
		out.println("</head>");
		
		out.println("<body>");
		out.println("<a href =\"index.html\">返回页面</a>");	//超链接返回主页面
		
		File file=new File("D:\\java\\Myweb\\dbfile-"+type); //打开对应文件
		InputStream in=new FileInputStream(file);			//创建文件输入流
		byte[] ba=new byte[128];						
		int i=in.read(ba);									//读取文件
		String s=new String(ba,Charset.forName("utf-8"));	//文件流定义成utf-8字符串
		s=s.replace("\n","<br/>");							//文件中的换行成html中的换行
		
		out.println(s);										//输出内容
		out.println("</body>");
		out.println("</html>");								//html尾部
	}
	
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

在这里插入图片描述
有登陆链接,可以查询选项文件中的内容

登陆界面

网页部分

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>登陆</title>
	<style>html,body{text-align:center;}div{height:1px;margin:0 auto}</style>
</head>
<body>

<a href="index.html">返回</a>
	<h1>登陆</h1> 
	<form action="LoginServer">
		<input name="a" placeholder="输入用户名"/><br/>
		<input name="b" type="password" placeholder="输入密码"/><br/>
		<button>登陆</button>
	</form>
	<form action="register">
		<a href="register.html">注册用户</a>
	</form>
</body>
</html>

java部分

package com.abc;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

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 LoginServer
 */
@WebServlet("/LoginServer")
public class LoginServer extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServer() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */ 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");			//编码
		
		java.io.PrintWriter out=response.getWriter();	//输入流和html的头部
		out.println("<html>");
		out.println("<head>");
		out.println("<meta charset=\"UTF-8\">");
		out.println("</head>");
		out.println("<style>html,body{text-align:center;}div{height:1px;margin:0 auto}</style>");
		out.println("<body>");
		
		out.println("<a href =\"login.html\">返回登陆页面</a>");	//超链接
		
		String a=request.getParameter("a");	//获取输入的用户和密码
		String b=request.getParameter("b");
		System.out.println("输入的用户名"+a);
		System.out.println("输入的密码为"+b);
		String result=null;
		
		try {
			File file=new File("D:\\java\\Myweb\\login-"+a);	//打开a用户文件,成功继续
			byte[] arr=new byte[128];							//新建字节数组
			b=toMd5(b);											//将密码加密进行匹配
			int i=new FileInputStream(file).read(arr);			//读取文件中保存的密码
			String password=new String(arr,0,i);				
			result=b.equals(password)?"登陆成功":"密码错误";		//判断密码是否正确(加密后的)
		}catch(FileNotFoundException e){						//打开异常则没有用户
			result="用户不存在";
		}
		out.print(result);										//输出结果
		
		
		out.println("</body>");	//尾部
		out.println("</html>");
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
	String toMd5(String s) {			//加密函数
		String result = "";
		try {
			byte[] md5 = java.security.MessageDigest.getInstance("MD5").digest(s.getBytes());
			for (int i = 0; i < md5.length; i++) {
				result += String.format("%02X", md5[i]);
			}
		} catch (java.security.NoSuchAlgorithmException e) {
		}
		return result;
	}

}

在这里插入图片描述
通过返回链接返回主页面,注册用户到注册页面,输入用户名和密码进行登陆

注册

网页部分

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<a href="login.html">返回</a>
	<h1>注册</h1> 
	<form action="register">
		<input name="a" placeholder="输入用户名"/><br/>
		<input name="b" type="password" placeholder="输入密码"/><br/>
		<input name="c" type="password" placeholder="确认密码"/><br/>
		<button name="register">确认注册</button>
	</form>
</body>
</html>

java部分

package com.abc;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
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 register
 */
@WebServlet("/register")
public class register extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public register() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");	//编码
		
		java.io.PrintWriter out=response.getWriter();	//输入流html的头部
		out.println("<html>");
		out.println("<head>");
		out.println("<meta charset=\"UTF-8\">");
		out.println("</head>");
		out.println("<style>html,body{text-align:center;}div{height:1px;margin:0 auto}</style>");
		out.println("<body>");
		
		out.println("<a href =\"login.html\">返回登陆页面</a>");	//超链接
		
		String a=request.getParameter("a");	//获取输入的用户和密码
		String b=request.getParameter("b");
		String c=request.getParameter("c");
		if(b.equals(c)) {					//确认两次输入密码一致
			b=toMd5(b);						//密码加密保存
			File file=new File("D:\\java\\Myweb\\login-"+a);//打开文件
			if(!file.exists()) {							//如果没有存在,则创建
				file.createNewFile();						//创建用户文件
				byte bytes[]=new byte[128];
				bytes=b.getBytes();
				int n=bytes.length;
				FileOutputStream out2=new FileOutputStream(file);
				out2.write(bytes, 0, n);					//写入
				out2.close();
				out.print("注册成功");
			}
			else {											//文件存在
				out.print("用户已经存在");
			}
		}
		else {												//两次输入密码不同
			out.print("两次密码输入不同");
		}
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
	String toMd5(String s) {
		String result = "";
		try {
			byte[] md5 = java.security.MessageDigest.getInstance("MD5").digest(s.getBytes());
			for (int i = 0; i < md5.length; i++) {
				result += String.format("%02X", md5[i]);
			}
		} catch (java.security.NoSuchAlgorithmException e) {
		}
		return result;
	}
}

在这里插入图片描述
返回可以到登陆页面,输入两次密码,不同会提示,已注册也会提示,密码加密保存。

文件目录

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值