>  기사  >  웹 프론트엔드  >  JSP 페이지 확인 코드의 전체 예

JSP 페이지 확인 코드의 전체 예

韦小宝
韦小宝원래의
2018-01-18 09:46:503003검색

이 글은 주로 jsp 페이지를 자세히 소개합니다인증 코드jsp 학습에 대한 확실한 참고자료와 가치가 있는 완전한 예시입니다. jsp에 관심이 있는 친구들은 이 글을 참고하세요

프로젝트 구조는 다음과 같습니다. 새 웹 프로젝트를 만들고 이름을 servlet

1. src

package com.servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class IdentityServlet extends HttpServlet {

  public static final char[] chars={'2','3','4','5','6','7','8','9','A'};//自定义验证码池
  public static Random random=new Random();  //随机数
  
  public static String getRandomString(){  //获取6位随机数,放在图片里
    StringBuffer buffer=new StringBuffer();
    for(int i=0;i<6;i++){
      buffer.append(chars[random.nextInt(chars.length)]);
    }
    return buffer.toString();
  }
  
  public static Color getRandomColor(){  //获取随机的颜色
    return new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
  }
  
  public static Color getReverseColor(Color c){  //返回某颜色的反色
    return new Color(255 - c.getRed(), 255 - c.getGreen(), 255 - c.getBlue());
  }
  
  /**
   * Constructor of the object.
   */
  public IdentityServlet() {
    super();
  }

  /**
   * Destruction of the servlet. <br>
   */
  public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
  }

  /**
   * The doGet method of the servlet. <br>
   *
   * This method is called when a form has its tag value method equals to get.
   * 
   * @param request the request send by the client to the server
   * @param response the response send by the server to the client
   * @throws ServletException if an error occurred
   * @throws IOException if an error occurred
   */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("image/jpeg");  //设置输出类型
    
    String randomString = getRandomString();  //随机字符串
    request.getSession(true).setAttribute("randomString", randomString);//放到session里
    
    int width=100;  //图片宽度
    int height=30;  //图片高度
    
    Color color=getRandomColor();  //随机颜色,用于背景色
    Color reverse=getReverseColor(color);//反色,用于前景色
    //创建一个彩色图片
    BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D g=bi.createGraphics();  //绘图对象
    g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16));//设置字体
    g.setColor(color);//设置颜色
    g.fillRect(0, 0, width, height);//绘制背景
    g.setColor(reverse);
    g.drawString(randomString, 18, 20);//绘制随机字符
    for(int i=0,n=random.nextInt(100);i<n;i++){  //画最多100个噪音点
      g.drawRect(random.nextInt(width), random.nextInt(height), 1, 1);
    }
    ServletOutputStream out= response.getOutputStream();//转成JPEG格式
    JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);//编码器
    encoder.encode(bi);  //对图片进行编码
    out.flush();  //输出到客户端
  }

  /**
   * The doPost method of the servlet. <br>
   *
   * This method is called when a form has its tag value method equals to post.
   * 
   * @param request the request send by the client to the server
   * @param response the response send by the server to the client
   * @throws ServletException if an error occurred
   * @throws IOException if an error occurred
   */
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    doGet(request, response);
  }

  /**
   * Initialization of the servlet. <br>
   *
   * @throws ServletException if an error occurs
   */
  public void init() throws ServletException {
    // Put your code here
  }

}

2 아래에 새 서블릿 클래스를 만듭니다. Web.xml은 서블릿 및 서블릿 매핑 구성을 자동으로 생성합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name></display-name>
 <servlet>
  <servlet-name>IdentityServlet</servlet-name>
  <servlet-class>com.servlet.IdentityServlet</servlet-class>
 </servlet>

 <servlet-mapping>
  <servlet-name>IdentityServlet</servlet-name>
  <url-pattern>/servlet/IdentityServlet</url-pattern>
 </servlet-mapping>  
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

3. WebRoot 아래 하나 확인 코드를 보여주는 HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function reloadImage(){
  document.getElementById(&#39;btn&#39;).disabled=true;
  document.getElementById(&#39;identity&#39;).src=&#39;servlet/IdentityServlet?ts=&#39;+new Date().getTime();
}
</script>
</head>

<body>

<img src="servlet/IdentityServlet" id="identity" onload="btn.disabled=false;" />
<input type=button value="换个图片" onclick="reloadImage()" id="btn">
</body>
</html>

Tomcat을 시작하고 URL을 입력하세요: http://localhost:8080/servlet/identity.html, 효과는 다음과 같습니다:

'이미지 변경'을 클릭하세요. '를 입력하면 새로운 인증 코드가 생성됩니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다! !

관련 권장 사항:

jsp에서 ResourceBundle 클래스의 국제화

jsPlumb 플로우차트 경험 요약

jsp에서 변수 및 메서드 선언 및 사용 지침

위 내용은 JSP 페이지 확인 코드의 전체 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.