一、实验目的
1、理解Servlet的工作原理;
2、掌握javabean在web程序中的应用;
3、掌握基于Servlet的MVC模式;
二、实验要求
1. 掌握Servlet的编程技术。
2. 掌握Web程序中使用javabean实现业务逻辑
3. 熟练使用IDE开发Servlet应用
4. 掌握Servlet3.0的注解功能
登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginCheck.jsp</title>
</head>
<body>
<form action="loginCheckServlet" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="name" placeholder="请输入用户名"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pwd" placeholder="请输入密码"/></td>
</tr>
<tr>
<td>验证码:</td>
<td><input type="text" name="yzm" id="yzm" placeholder="请输入验证码"/></td>
<td><img id="yzm" src="yzm.jsp" onclick="javascript:document.getElementById('yzm'). src='yzm.jsp?'+Math.random();" /></td>
<tr>
<td><input type="submit" value="提交" /></td>
<td><input type="reset" value="重置" /></td>
</tr>
</table>
</form>
</body>
</html>
登录成功+注销
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginSuccess.jsp</title>
</head>
<body>
<jsp:useBean id="user" class="third.User" scope="request" />
恭喜<jsp:getProperty property="name" name="user" /> 登陆成功!
<table>
<tr>
<td><input type="button" value="注销" onclick="location.href='loginCheck.jsp'"/></td>
</tr>
</table>
</body>
</html>
验证码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Random"%>
<%@ page import="java.io.OutputStream"%>
<%@ page import="java.awt.Color"%>
<%@ page import="java.awt.Font"%>
<%@ page import="java.awt.Graphics"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="javax.imageio.ImageIO"%>
<%
int width = 60;
int height = 20;
//create the image
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
// set the background color
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
// draw the border
g.setColor(Color.black);
g.drawRect(0, 0, width - 1, height - 1);
// create a random instance to generate the codes
Random rdm = new Random();
String hash1 = Integer.toHexString(rdm.nextInt());
// make some confusion
for (int i = 0; i < 50; i++) {
int x = rdm.nextInt(width);
int y = rdm.nextInt(height);
g.drawOval(x, y, 0, 0);
}
// generate a random code
String capstr = hash1.substring(0, 4);
request.getSession().setAttribute("key", capstr);//将验证码存储到session中
g.setColor(new Color(0, 100, 0));
g.setFont(new Font("Candara", Font.BOLD, 22));
g.drawString(capstr, 8, 16);
g.dispose();
response.setContentType("image/jpeg");
out.clear();
out = pageContext.pushBody();
OutputStream strm = response.getOutputStream();
ImageIO.write(image, "jpeg", strm);
strm.close();
%>
servlet
package servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import third.User;
/**
* Servlet implementation class LoginCheckServlet
*/
@WebServlet(name="loginCheckServlet",urlPatterns= {"/loginCheckServlet"})
public class LoginCheckServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public LoginCheckServlet(){
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
User user = new User();
user.setName(name);
user.setPwd(pwd);
UserCheck uc = new UserCheck();
String key = (String)request.getSession().getAttribute("key");// session中验证码
if(!uc.validate(user)||key == null || !key.equals(request.getParameter("yzm"))) {
request.setAttribute("msg", "验证码错误");
// response.sendRedirect("loginCheck.jsp");
request.getRequestDispatcher("loginCheck.jsp").forward(request, response);
}else {
request.setAttribute("user", user);
RequestDispatcher dis = request.getRequestDispatcher("loginSuccess.jsp");
dis.forward(request, response);
}
}
}
用户
package third;
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
用户检查
package servlet;
import third.User;
public class UserCheck {
//验证登录
public boolean validate(User user) {
if(user !=null && user.getName().equals("test")) {
if(user.getPwd().equals("123456")) {
return true;
}
return false;
}
return false;
}
}