例子为一个登陆查询界面,只实现功能
主页面
网页部分
<!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;
}
}
返回可以到登陆页面,输入两次密码,不同会提示,已注册也会提示,密码加密保存。