쿠키, 세션 및 필터는 일반적으로 웹 응용 프로그램에 사용됩니다. 쿠키 및 세션은 특정 데이터를 저장하는 데 사용됩니다. 브라우저가 요청을 한 후에 필터 필터가 적용되고 배경이 특정 요청을 실행하기 전에 필터가 적용됩니다. 이 세 가지가 합쳐지는 이유는 일부 로그인 프로그램과 같이 종종 결합되기 때문입니다.
쿠키는 브라우저 메커니즘이며 세션은 서버 메커니즘이지만 실제로 쿠키는 서버에 의해 생성 된 다음 브라우저 자체에서 생성되지 않은 브라우저로 반환됩니다. 브라우저가 요청을 보내면 쿠키가 유효한 쿠키가 있으면 쿠키를 하나로 모을 것입니다.
모든 쿠키는 HTTP 프로토콜이 원래 무국적 프로토콜이기 때문에 사용됩니다. 즉, HTTP 프로토콜 자체를 통해 서버가 브라우저가 이전에 액세스했는지 여부를 결정할 수 없습니다.
필터와 서블릿의 작문 방법은 비슷합니다. 관련 코드를 작성할 때 필터 인터페이스를 구현하고 관련 메소드를 다시 작성해야합니다. 일반적으로 도필터 방법이 더 자주 변경됩니다. 작성 후 필터 코드가 효과적이어야하는 경우 서블릿 구성과 같은 Web.xml에서 특정 구성을 구성해야합니다.
다음은 쿠키, 세션, 서블릿 및 필터를 결합한 간단한 로그인 샘플 코드입니다.
데이터베이스 데이터 역할을하도록 사용자 엔티티 클래스를 정의하십시오. 싱글 톤 패턴은 여기에서 하나의 인스턴스 객체 만 존재하는지 확인하기 위해 사용됩니다.
패키지 모델; / ** * 사용자 정보 엔티티 클래스 * * @author tuzongxun123 * */ public class usermodel {private String username; 개인 문자열 비밀번호; // 싱글 톤 모드, 사용자 객체 인스턴스가 하나만 있는지 확인 public static usermodel getInstance () {usermodel user = new usermodel ( "zhangsan", "123456"); 리턴 사용자; } private usermodel (문자열 사용자 이름, 문자열 암호) {this.username = username; this.password = 비밀번호; } public String getUserName () {return username; } public String getPassword () {return password; }} 사용자 로그인 index.jsp 인터페이스에 로그인하고 양식 동작의 JSP 기능을 사용하여 프로젝트 경로를 얻습니다.
<%@ page language = "java"import = "java.util.*"contenttype = "text/html; charset = utf-8"pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en" "http://www.w3.org/tr/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = "content-type"content = "text/html; charset = utf-8"> <title> cookieandfiltertest> </head> <form> action = "< %= request.getContextPath () %>/loginservlet"method = "post"> username : <input type = "text"name = "username"/> </br> 비밀번호 : <입력 유형 = "password"name = "password"/> </br> <input type = "value ="login "/> form> </html> </html>
해당 배경 서블릿 :
패키지 Servlettest; import java.io.ioexception; javax.servlet.servletexception import; javax.servlet.http.cookie import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; 가져 오기 model.usermodel; 공개 클래스 LoginServlet는 httpservlet {@override protected void doget (httpservletrequest req, httpservletresponse resp)을 servletexception, ioexception {this.dopost (req, resp); } @override protected void dopost (httpservletrequest req, httpservletresponse resp) servletexception, ioexception {string username = req.getParameter ( "username"); 문자열 암호 = req.getParameter ( "password"); // 데이터베이스 데이터 시뮬레이션 usermodel user = usermodel.getInstance (); 문자열 dbusername = user.getusername (); 문자열 dbpassword = user.getPassword (); if (dbusername.equals (username) && dbpassword.equals (password)) {// 사용자 이름과 비밀번호 일치 모두 로그인이 성공했음을 증명하고 세션 설정 및 쿠키 httpsession 세션 = req.getsession (); session.setattribute ( "사용자 이름", 사용자 이름); session.setattribute ( "비밀번호", 비밀번호); 쿠키 쿠키 = 새로운 쿠키 ( "사용자 이름", 사용자 이름); 쿠키 쿠키 2 = 새로운 쿠키 ( "비밀번호", 비밀번호); // 쿠키의 저장 시간을 설정 쿠키 쿠키 .setMaxage (60); Cookie2.SetMaxage (60); // 쿠키를 브라우저로 보내기 resp.addcookie (쿠키); resp.addcookie (cookie2); // 사용자 목록에 대한 전달 요청 req.getRequestDisPatcher ( "/userList"). FORMAR (req, resp); } else {// 로그인에 대한 전달 요청 페이지 req.getRequestDispatcher ( "index.jsp"). forward (req, resp); }; }} 로그인 후 점프 요청 :
패키지 Servlettest; import java.io.ioexception; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; 가져 오기 model.usermodel; public class userListServlet는 httpservlet {@override protected void doget (httpservletrequest req, httpservletreponse resp) servletexception, ioexception {this.dopost (req, resp); } @override Protected Void Dopost (httpservletrequest req, httpservletrepsonse resp) servletexception, ioexception {usermodel user = usermodel.getinstance (); // 브라우저에서 사용자 목록 책 데이터 인쇄 resp.getWriter (). writ }} 프로젝트 web.xml 구성 :
<? xml version = "1.0"encoding = "utf-8"?> <web-app xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http://java.sun.com/xml/ns/javaee" xmlns : web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id ="webapp_id "version ="2.5 "> <!-액세스 할 때 프로젝트 이름-> <display-name> cookiendfiltertest </display-name> <!-servlet </servlet-- <servlet-- name> <servlet-class.loginservlet </servlet-class> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> login </servlet-name> <url-pattern>/loginservlet </url-pattern> </servlet-mapping> <servlet> <servlet-name> userlist </servlet-name> <servlet-class.userListServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> userList </servlet-name> <Url-pattern>/userList </url-pattern> </servlet-mapping> <!-필터 설정, 요청을 탐색 한 후, filter>를 먼저 이동합니다. <filter-name> loginfilter </filter-name> <filter-class> filtertest.filtertest </filtertest </filter-class> </filter> <filter-mapping> <filter-name> loginfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!- <환영 이름-<reter in the project name- <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app>
Java 필터 코드 :
패키지 필터 테스트; import java.io.ioexception; javax.servlet.filter import; javax.servlet.filterchain import; javax.servlet.filterconfig import; javax.servlet.servletexception import; javax.servlet.servletrequest import; Javax.Servlet.ServletResponse 가져 오기; javax.servlet.http.cookie import; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; 가져 오기 model.usermodel; 공개 클래스 필터 테스트는 필터 {@override public void destroy () {} @} @override public void dofilter (servletrequest 요청, servletreponse 응답, 필터 체인 체인)를 ioexception, servletexception {// 직접 httppletRequest에 대한 httppletRequest req = (httppservletrequest); httpservletresponse resp = (httpservletresponse) 응답; String uri = req.getRequesturi (); if ( "/cookieandfiltertest/loginservlet".equals(Uri) ||"/cookieAndfiltertest/".equals(Uri)) {// release Chain.dofilter (요청, 응답); 반품; } // 로그인 요청이 아닌 경우 쿠키 쿠키가 있는지 확인하십시오 [] 쿠키 = req.getCookies (); if (쿠키! = null && cookies.length> 0) {String username = null; 문자열 암호 = null; // 쿠키의 사용자 이름과 비밀번호가 데이터베이스와 일치하는지 확인하십시오. 일관된 경우, 그렇지 않으면 (쿠키 쿠키 : 쿠키) {if ( "username".equals (cookie.getName ())) {username = coopie.getValue (); } if ( "password".equals (coopie.getName ())) {password = coopie.getValue (); }} usermodel user = usermodel.getInstance (); if (user.getusername (). equals (username) && user.getpassword (). equals (password)) {chain.dofilter (요청, 응답); 반품; } else {// 로그인 인터페이스로 리디렉션하여 req.getRequestDispatcher ( "/index.jsp"). forward (req, resp); 반품; }} else {req.getRequestDispatcher ( "/index.jsp"). Forward (req, resp); 반품; }} @override public void init (FilterConfig arg0) servletexception {}}위의 내용은이 기사에 관한 모든 것입니다. 모든 사람들이 Java 프로그래밍을 배우는 것이 도움이되기를 바랍니다.