JSP 인증 코드 제작 실례 상세 설명
인증번호
인증 코드(CAPTCHA)는'Complete Automated Public Turing test to tell Computers and Humans Apart'(컴퓨터 와 인간 을 자동 으로 구분 하 는 툴 링 테스트)의 약자 로,사용자 가 컴퓨터 인지 사람 인지 구분 하 는 공공 전자 동 프로그램 이다.방지 할 수 있 습 니 다.비밀 번 호 를 악의 적 으로 풀 고 표를 긁 으 며 포럼 에 물 을 주입 하 는 것 은 특정한 해커 가 특정한 등록 사용자 에 게 특정한 프로그램 폭력 으로 해결 하 는 방식 으로 끊 임 없 는 로그 인 시 도 를 하 는 것 을 효과적으로 방지 할 수 있 습 니 다.실제로 인증 코드 를 사용 하 는 것 은 현재 많은 사이트 에서 통용 되 는 방식 입 니 다.우 리 는 비교적 간단 하고 간단 한 방식 으로 이 기능 을 실현 합 니 다.이 문 제 는 컴퓨터 로 생 성 되 고 평가 할 수 있 지만 인간 만 이 풀 수 있어 야 한다.컴퓨터 가 CAPTCHA 의 질문 을 풀 수 없 기 때문에 질문 에 답 한 사용 자 는 인간 으로 볼 수 있다.
JSP 인증 코드 만 들 기
실행 환경:tomcat+eclipse+jdk
기본 사상:현재 Servlet 에 인증 코드 그림 을 그 려 서 페이지 에 표시 하고 js 방법 으로 인증 코드 를 새로 고 칠 수 있 습 니 다.ajax 로 사용자 가 입력 한 값 을 servlet 과 인증 코드 를 비교 하여 여 부 를 판단 하고 알림 사용자 에 게 부합 할 수 있 습 니 다.
기본 방법:
BufferedImage:
Image ,BufferedImage Image 。
Image BufferedImage 。
Java :
Java
String imgPath = "d:/demo.jpg";
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
, : :image.getWidth(null); 。
Graphics: Graphics 류 는 기본 적 인 기하학 적 도형 그리 기 방법 을 제공 합 니 다.주로 선분 그리 기,사각형 그리 기,원 그리 기,색깔 있 는 도형 그리 기,타원 그리 기,원호 그리 기,다각형 그리 기 등 이 있 습 니 다.그 내용 을 구체 적 으로 조작 하면 제 가 추천 합 니 다자바 의 Graphics 류 를 사용 하여 그림 을 그 리 는 방법 에 대한 상세 한 설명
인증 코드 구현
제 가 여기 서 만 든 인증 코드 는 중국 어 를 표시 하 는 것 입 니 다.servlet 에서 숫자 를 표시 할 지 알파벳 을 표시 할 지 결합 할 지 수정 할 수 있 습 니 다.배열 로 저장 할 수도 있 고 ASCII 코드 를 줄 의 무 작위 숫자 로 바 꿀 수도 있 습 니 다.개인 적 인 취향 을 볼 수도 있 습 니 다.
먼저 jsp 의 인증 코드 를 만 드 는 곳 입 니 다.
<div class="row cl">
<div>
<input type="text" placeholder=" " value=" :" onblur="testCheck(this.value);">
<img id="pic" src="CheckTestServlet"> <a id="kanbuq" onClick="Checktest();"> , </a> </div>
</div>
Servlet 을 만 들 고 있 습 니 다.CheckTestServlet.자바 라 고 합 니 다.
@WebServlet("/CheckTestServlet")
public class CheckTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
response.setCharacterEncoding("utf-8");
// BufferedImage(int width, int height, int imageType)
BufferedImage bImage=new BufferedImage(100, 30, BufferedImage.TYPE_3BYTE_BGR);
//
Graphics g=bImage.getGraphics();
//
g.setColor(Color.orange);
// , (0,0) , 100,30
g.fillRect(0, 0, 100, 30);
//
Random r=new Random();
int index;//
//
StringBuffer sBuffer=new StringBuffer();
//
for (int i = 0; i < 4; i++) {
// 4e00 19968, 9fa0 40869,
index=r.nextInt(40869-19968+1)+19968;//
// ,
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
// ,
g.setFont(new Font("", Font.BOLD, 20));
/* , Integer.toHexString(index),16) (char)(Integer.parseInt,
*/
g.drawString((char)(Integer.parseInt(Integer.toHexString(index),16))+"", i*22+4, 18);
// StringBuffer ,
sBuffer.append((char)(Integer.parseInt(Integer.toHexString(index),16)));
}
// session
request.getSession().setAttribute("piccode", sBuffer.toString());
/*
* write(RenderedImage im, String formatName, OutputStream output)
*/
ImageIO.write(bImage, "jpg", response.getOutputStream());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
js 인증 코드 를 새로 고 치 는 것 은 잘 보이 지 않 거나 다른 새로 고 치 는 데 사 용 됩 니 다.
function Checktest(){
var time=new Date().getTime();
$("#pic").attr('src',"CheckTestServlet?d="+time)
}
사용자 가 입력 한 알림 이 올 바 르 게 되 돌 아 왔 는 지 검증 하기 위해 Ajax 를 하나 더 쓰 십시오.이것 은 jQuery 로 만 든 것 입 니 다.js 를 인용 해 야 합 니 다.
function testCheck(num){
$.ajax({
type:"post",//
url:"TestCheckServlet",//
async:true,//
dataType:"html",//
data:{"num":num},//
success:function(data,textStatus){//
$("#checks").html(data)
},
error:function(){//
alert("error");
}
})
}
좀 귀 찮 은 데 Servlet 을 만들어 서 Ajax 가 보 낸 값 이 인증 코드 와 일치 하 는 지 확인 하 세 요.
@WebServlet("/TestCheckServlet")
public class TestCheckServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
// , , ,
if (request.getSession().getAttribute("piccode").toString().equals(request.getParameter("num"))) {
out.println(" ");
}else {
out.println(" ");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
이렇게 해서 인증 코드 는 이미 기본적으로 해결 되 었 고 그 중에서 수정 해 야 할 내용 도 많 습 니 다.무늬 는 수요 에 따라 이 루어 집 니 다.이상 은 바로 QR 코드 의 제작 입 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VScode에서 MVN, Tomcat, JSP/Servlet에서 웹 앱 개발 메모Java와 maven 설치 ( ) 플러그인을 VScode에 설치 Tomcat DL ( ) ※ 환경에 따라 Tomcat 버전을 선택하십시오 Tomcat을 DL하면 zip을 압축 해제하고 모든 디렉토리에 넣습니다. ma...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.