Куки, сеансы и фильтры обычно используются в веб -приложениях. Куки и сеансы используются для сохранения определенных данных. Фильтрующие фильтры вступают в силу после того, как браузер выполнит запрос и до того, как фон выполнит конкретный запрос. Причина, по которой эти три собраны вместе, заключается в том, что они часто объединяются, например, некоторые программы входа в систему .
Файлы cookie - это механизм браузера, а сеанс - это серверный механизм, но на самом деле сервер также генерируется куки, а затем возвращаются в браузер, не генерируемые самим браузером. Когда браузер отправляет запрос, он объединит куки, если у него есть действительный cookie.
Все файлы cookie используются, потому что протокол HTTP изначально является протоколом без сохранения состояния, что означает, что с помощью самого протокола HTTP сервер не может определить, был ли браузер доступ к нему ранее.
Методы написания фильтра и сервлета похожи. При написании связанного кода вам необходимо реализовать интерфейс фильтра и переписать связанные методы. Обычно метод Дофильтера меняется чаще. Если код фильтра должен быть эффективным после написания, необходимо настроить определенную конфигурацию в web.xml, как настройка сервлетов.
Вот простой пример входа в систему кода, объединяющий файлы cookie, сеансы, сервлеты и фильтры:
Определите класс пользовательских объектов, чтобы действовать как данные базы данных. Одиночный рисунок используется здесь, чтобы гарантировать, что существует только один объект экземпляра:
пакетные модели; / ** * Информация пользователя класс * * * @author tuzongxun123 * */ public class usermodel {private String username; Private String Password; // режим Singleton, убедитесь, что существует только один экземпляр пользователя public static usermodel getInstance () {usermodel user = new usermodel ("Zhangsan", "123456"); вернуть пользователь; } private usermodel (string username, string password) {this.username = username; this.password = пароль; } public String getUsername () {return username; } public String getPassword () {return пароль; }} Вход пользователя в интерфейс 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/html4/loose.dtd"> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8" action = "< %= request.getContextPath () %>/loginservlet" method = "post"> username: <input type = "text" name = "username"/> </br> пароль: <input type = "password" name = "password"/> </br> <input type = "Отправить" value = "login"/> </form> </body> </html> "value =" valuin = "/> </form> </body> </html> </html> </html> </html> </html> </html> </html>
Соответствующий фоновый сервлет:
пакет Servlettest; импортировать java.io.ioexception; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.cookie; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт javax.servlet.http.httpsession; Импорт модели.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) throws servletexception, ioexception {String username = req.getParameter ("userName"); String password = req.getParameter ("пароль"); // Моделируют данные базы данных usermodel user = usermodel.getinstance (); String dbusername = user.getusername (); String dbpassword = user.getPassword (); if (dbusername.equals (username) && dbpassword.equals (password)) {// как имя пользователя и пароль соответствует, докажите, что вход в систему успешно, Set Session и Cookie httpsession session = req.getSession (); session.setattribute («Имя пользователя», имя пользователя); session.setattribute ("пароль", пароль); Cookie cookie = новое печенье («Имя пользователя», имя пользователя); Cookie cookie2 = new cookie ("пароль", пароль); // Установите время хранения файлов cookie.setmaxage (60); cookie2.setmaxage (60); // отправлять файлы cookie в браузер resp.addcookie (cookie); Resp.addcookie (cookie2); // Переход запроса на список пользователей req.getRequestDispatcher ("/userlist"). } else {// Переадресация запроса на страницу входа в систему req.getRequestDispatcher ("index.jsp"). }; }} Запрос на прыжок после входа в систему:
пакет Servlettest; импортировать java.io.ioexception; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт модели.usermodel; Общедоступный класс пользовательский лист Extends httpservlet {@Override Protected void Doget (httpservletrequest req, httpservletresponse resp), вытесняет Servletexception, ioException {this.dopost (req, resp); } @Override Protected void Dopost (httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {usermodel user = usermodel.getinstance (); // Распечатать данные о списке пользователей в браузере resp.getWriter (). Write ("username:" + user.getUsername () + "," + "пароль:" + user.getPassword ()); }} Конфигурация проекта 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 "> <!-Имя проекта при доступе-> <SIVEL-name> cookieAndfiltertest </display-mame> <!-Сервисная конфигурация-> <SIMPLE> <Servlet-name-name-name> <!-Servlet-> <Servlet> <Servlet> </servlet-name-mame> <! <Servlet-class> ServletTest.loginServlet </servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> login </servlet-name> <url-pattern>/loginservlet </url-pattern> </servlet-mapping> <servlet> <servlet-name> пользовательский список </servlet-name> <servlet-class> servlettest.userlistservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> пользовательский список </servlet-name> <url-pattern>/user-list </url-pattern> </servlet-mapping> <!-Настройки фильтрации после перехода за запрос, вы зайдете здесь сначала-> <Filtator> <! <filter-name> loginfilter </filter-name> <filter-class> filtertest.filtertest </filter-class> </filter> <Filter-Mapping> <Filter-name> LoginFilter </filter-name> <Url-pattern>/*</url-pattern> </filter-mapping> <!-страница url-fase-fame-fame-fame-falist-filter> <! <selcoveryfile> index.jsp </wervedied-file> </werving-file-list> </web-app>
Код фильтра Java:
пакет FilterTest; импортировать java.io.ioexception; Импорт javax.servlet.filter; Импорт javax.servlet.filterchain; Импорт javax.servlet.filterConfig; Импорт javax.servlet.servletexception; Импорт javax.servlet.servletrequest; Импорт javax.servlet.servletresponse; Импорт javax.servlet.http.cookie; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт модели.usermodel; Общедоступный класс FilterTest реализует Filter {@Override public void destress () {} @Override public void doFilter (запрос ServletRequest, ответ verletresponse, цепочка FilterChain). Httpservletresponse resp = (httpservletresponse) ответ; String uri = req.getRequesturi (); if ("/cookieandfiltertest/loginservlet".equals(uri) ||" /cookieandfiltertest/".equals(uri)) {// lepred chain.dofilter (запрос, ответ); возвращаться; } // Если это не запрос входа в систему, определите, есть ли файлы cookie cookie [] cookie = req.getCookies (); if (cookies! = null && cookies.length> 0) {string username = null; String password = null; // Определите, соответствуют ли имя пользователя и пароль в файле cookie с базой данных. Если это последовательно, отпустите его, в противном случае пересылайте запрос на страницу входа в систему для (cookie cookie: cookie) {if ("username" .equals (cookie.getname ())) {username = cookie.getvalue (); } if ("пароль" .equals (cookie.getName ())) {password = cookie.getValue (); }} Usermodel user = usermodel.getinstance (); if (user.getusername (). equals (username) && user.getpassword (). equals (password)) {chain.dofilter (request, response); возвращаться; } else {// перенаправить на интерфейс входа в систему req.getRequestDispatcher ("/index.jsp"). возвращаться; }} else {req.getRequestDispatcher ("/index.jsp"). возвращаться; }} @Override public void init (filterConfig arg0) бросает ServletException {}}Выше приведено все об этой статье, я надеюсь, что для всех будет полезно изучать программирование Java.