В основном представлены Struts2 в сочетании с файлами cookie для достижения автоматического входа в систему
При комбинировании Struts2 с файлами cookie вы должны обратить внимание на использование действий.
struts2 Jar Package
Файл базы данных ссылок db.properties
dbdriver = oracle.jdbc.driver.oracledriverurl = jdbc: oracle: thin: @localhost: 1521: orclusername = testpassword = пароль
Код уровня DAO для получения пользовательской информации с помощью имени входа в систему
пакет com.struts.dao.impl; import java.sql.connection; import java.sql.preparedStatement; import java.sql.resultset; import java.sql.sqlexception; imporm.struts.dao.userdao; import.prouts.prout. Userdaoimpl реализует userdao {private beanconnection dbconn = new Beanconnection (); Общественный пользовательский вход (строка loginname) {connection conn = dbconn.getConnection (); Результат RS = NULL; String selsql = "select * from t_scoa_sys_user, где f_loginname = '"+loginname+"'" "; //System.out.println(selsql); Подготовленное Statatement pstmt = null; Пользователь пользователь = null; try {pstmt = conn.preparestatement (selsql); //pstmt.setString(3, loginName); rs = pstmt.executequery (); while (rs.next ()) {user = new user (); user.setid (rs.getlong (1)); user.setf_username (rs.getString (2)); user.setf_loginname (rs.getstring (3)); user.setf_sex (rs.getString (4)); user.setf_state (rs.getString (5)); user.setf_email (rs.getString (6)); user.setf_mobilephone (rs.getstring (7)); user.setf_secretaryid (rs.getlong (8)); user.setf_password (rs.getString (9)); user.setf_order (rs.getlong (10)); user.setf_note (rs.getString (11)); user.setf_infomodifytemplateid (rs.getlong (12)); }} catch (sqlexception e) {e.printstacktrace (); } вернуть пользователь; } public void said (пользователь пользователь) {} public static void main (string [] args) {userDaoImpl daoimpl = new userDaoImpl (); daoimpl.login ("admin"); }}Класс инструментов cookieutils
пакет com.struts.util; import javax.servlet.http.cookie; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpsession; import org.apache.commons.lang.xwork.http. com.struts.action.loginaction; import com.struts.proj.user; import com.struts.service.userservice; import com.struts.service.impl.userserviceimpl; public cookieutils {public Static Final String user_cookie = "user.cookie"; // Добавить cookie public cookie addcookie (пользователь пользователя) {cookie cookie = new cookie (user_cookie, user.getf_loginname () + "," + desede.decryptit (user.getf_password ())); cookie.setmaxage (60 * 60 * 24 * 365); вернуть cookie; } // Получить cookie public boolean getcookie (httpservletrequest, пользовательский сервис userservice) {request = servletactioncontext.getRequest (); Cookie [] cookie = request.getcookies (); userservice = new userserviceimpl (); if (cookies! = null) {for (cookie cookie: cookie) {if (cookieutils.user_cookie.equals (cookie.getname ())) {string value = cookie.getValue (); // Определите, является ли символ пустым if (stringUtils.isnotblank (value)) {string [] spilled = value.split (","); String LoginName = DLIFLED [0]; String Password = пролитый [1]; User user = userservice.login (loginname, пароль); if (user! = null) {httpsession session = request.getSession (); session .setattribute (loginaction.user_session, user); // Добавить пользователя в сеанс return true; }}}}} вернуть false; } // Удалить cookie public cookie delcookie (httpservletrequest) {request = servletactioncontext.getRequest (); Cookie [] cookie = request.getcookies (); if (cookies! = null) {for (cookie cookie: cookie) {if (user_cookie.equals (cookie.getname ())) {cookie.setValue (""); cookie.setmaxage (0); вернуть cookie; }} return null; }}Код уровня службы, чтобы проверить, являются ли имя пользователя и пароль правильными. Я использую алгоритм шифрования локально и должен быть расшифрован. Друзья могут удалить пароль
пакет com.struts.service.impl; import com.struts.dao.userdao; import com.struts.dao.impl.userdaoimpl; import com.struts.proj.user; import com.struts.service.userservice; импорт com.truts.util.desede; UserDaoImpl (); Общедоступный пользовательский вход (String LoginName, String Password) {user user = userdao.login (loginname); if (user == null) {System.out.println («Имя пользователя не существует, пожалуйста, проверьте и войдите в систему!»); } if (! desede.decryptit (user.getf_password ()). equals (password)) {System.out.println ("ошибка пароля"); } вернуть пользователь; } public static void main (string [] args) {userServiceImpl useImp = new userserviceImpl (); System.out.println (useImp.login ("admin", "1234")); }}Проверка конфигурационного файла struts2.xml, логинзации и проверки проверки ValidateCodeaction struts2
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // Конфигурация Struts DTD 2.1 // en" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constantAnt names. /> <constant name = "struts.devmode" value = "true"/> <name = "loginResult" extends = "struts-default" namepace = "/"> <name = "loginaction"> <result name = "success" type = "redirect">/success.jsp </result> <name = name ">/error. type = "redirect">/login.jsp </result> </action> <!-код проверки-> <name = "validate"> <param name = "width"> 60 </param> <param name = "height"> 20 </param> <param name = "fontsize"> 18 </param> <param name = "codeledength"> 4 </param> <result stiep = "param> </param> <result =" name = "contentType"> image/jpeg </param> <param name = "inputeme"> inputstream </param> </result> </action> </package> </struts>
Вход класса файлов действий
пакет com.struts.action; import java.util.map; import javax.servlet.http.cookie; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpsersersponse; import javax.servlet.http.httpsersersponse; import.servlet.http.httpssession; org.apache.struts2.servletactionContext; Import Com.OpensyMphony.xwork2.actionContext; импорт com.opensymphony.xwork2 com.struts.util.desede; открытое логинчение класса расширяет Actionsupport {Private Static Long Long SerialVersionUID = 6650955874307814247L; Приватная строка f_loginname; Приватная строка f_password; Частный ответ httpservletresponse; Частный запрос HttpservletRequest; частная карта <строка, объект> сеанс; частные cookieutils cookieutils = new Cookieutils (); Частный логический Usercookie; частная строка ValidateCode; public Static Final String user_session = "user.session"; Userservice userservice = new userserviceimpl (); public String Autologin () Throws Exception {request = servletactionContext.getRequest (); if (cookieutils.getcookie (запрос, пользовательский сервис)) {return "успех"; } else вернуть "login"; } @Override public String execute () throws exception {httpsession session = servletactionContext.getRequest (). GetSession (); try {string code = (string) session.getattribute ("validatecode"); if (validatecode == null ||! validatecode.equals (code)) {System.out.println ("Код проверки вводится неправильно, пожалуйста, введите его правильно"); вернуть "ошибку"; } if (f_loginname! = null &&! "". equals (f_loginname) &&! "". // Определите, добавить ли строку cookie string psswd = desede.decryptit (user.getf_password ()); if (user! = null && psswd.equals (f_password)) {if (usercookie) {cookie cookie = cookieutils.addcookie (user); ActionContext.getContext (). Get ("response"); ServletActionContext.getResponse (). AddCookie (cookie); } session.setAttribute (user_session, user); вернуть "успех"; }}} catch (Exception e) {e.printstackTrace (); } вернуть "логин"; } // Пользователь выходит из публичной строки logout () {request = servletactionContext.getRequest (); response = ServletActionContext.getResponse (); Httpsession session = servletactioncontext.getRequest (). GetSession (); session = request.getSession (false); if (session! = null) session.removeattribute (user_session); Cookie cookie = cookieutils.delcookie (запрос); if (cookie! = null) response.addcookie (cookie); вернуть "вход"; } public static void main (string [] args) {loginAction login = new LoginAction (); try {login.execute (); } catch (Exception e) {e.printstackTrace (); }} public map <string, object> getSession () {return Session; } public void setSession (map <string, object> session) {this.session = session; } public httpservletresponse getResponse () {return response; } public void setResponse (httpservletresponse response) {this.response = response; } public httpservletRequest getRequest () {return запрос; } public void setRequest (httpservlectrequest) {this.request = request; } public boolean isusercookie () {return usercookie; } public void setUserCookie (Boolean usercookie) {this.usercookie = usercookie; } public String getF_LoginName () {return f_loginname; } public void setf_loginName (String floginName) {f_loginName = floginName; } public String getF_password () {return f_password; } public void setf_password (string fpassword) {f_password = fpassword; } public String getValidateCode () {return ValidAteCode; } public void setValidateCode (string valiveCode) {this.validateCode = validateCode; }}ValidAcodeAction, много примеров кодов проверки в Интернете, вы можете выбрать свой собственный способ написать код проверки
пакет com.struts.action; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedimage; импорт java.io.bytearrayinptream; import java.io.bytearrayoutputstream; import.ut.random; javax.imageio.imageio; import javax.imageio.stream.imageoutputstream; импорт com.opensymphony.xwork2.actionContext; импорт com.opensymphony.xwork2.cactionsupport; public class valyateCodeaction Extances upport {private static long long serialversionuid = 1l; Private BytearrayinputStream inputStream; Частная ширина INT; частный int height; частный int fontsize; Частный инт -кодовой; public validateCodeaction () {} public void setCodeLength (int codeLength) {this.codelength = codeLength; } public void setFontsize (int fontsize) {this.fontsize = fontsize; } public void setheight (int height) {this.height = height; } public void setwidth (int width) {this.width = width; } public BytearRayinptStream getInputStream () {return inputStream; } public void setInputStream (BytearRayinputStream inputStream) {this.inputStream = inputStream; } public String execute () Throws Exception {BufferedImage bimage = new BufferedImage (ширина, высота, 1); Графика g = bimage.getGraphics (); Случайный случайный = new Random (); g.setcolor (getrandomcolor (случайный, 200, 255)); G.FillRect (0, 0, ширина, высота); g.setfont (новый шрифт («Times New Roman», 0, Fontsize)); g.setcolor (getrandomcolor (случайный, 160, 200)); for (int i = 0; i <155; i ++) {int x = random.nextint (ширина); int y = random.nextint (высота); int xl = random.nextint (12); int yl = random.nextint (12); g.drawline (x, y, x + xl, y + yl); } StringBuffer str = new StringBuffer (); for (int i = 0; i <codeLength; i ++) {string randomStr = string.valueof (random.nextint (10)); str.append (randomstr); g.setcolor (новый цвет (20 + random.nextint (110), 20 + случайный .nextint (110), 20 + random.nextint (110), 20 + random.nextint (110))); int x = (ширина / CodeLength - 1) * i + random.nextint (ширина / (кодовая длина * 2)); int y = random.nextint (высота - fontsize) + fontsize; g.drawstring (randomstr, x, y); } ActionContext.getContext (). GetSession (). Put ("validateCode", str.ToString ()); g.dispose (); Bytearrayoutputstream output = new BytearrayOutputStream (); ImageOutputStream iout = imageIo.createImageOutputStream (output); Imageio.write (Bimage, "jpeg", IOUT); iout.close (); output.close (); BytearrayinputStream in = new BytearrayinputStream (output.tobytearray ()); setInputStream (in); вернуть "успех"; } private Color getRandomColor (случайный, int fc, int bc) {if (fc> 255) fc = 255; if (bc> 255) bc = 255; int r = fc + random.nextint (bc - fc); int g = fc + random.nextint (bc - fc); int b = fc + random.nextint (bc - fc); вернуть новый цвет (r, g, b); }}Страница страницы входа в систему успеха.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ page import = "com.struts.util.cookieutils"%> <%@ page import = "org.apache.commons.lang.xwork.stringutils"%> <%@ Taglib uri = "/strUts.xwork.Stringutils"%> <%@ Taglib = "/struts-tags". prefix = "s"%> <%string path = request.getContextPath (); String basePath = request.getScheme () + ": //" + request.getServername () + ":" + request.getServerport () + path + "/";%> <! Doctype html public "-// w3c // dtd html 4.01 transitional/en"> <html> <head> <Base> <ceptaTaL/en "> <html> <head> <ceptaTalaL/en"> <html> <haud> <cead> <ceptaTALAL/en " <title> страница успеха </title> </head> <body> <% cookie [] cookie = request.getcookies (); if (cookies! = null) {for (cookie cookie: cookie) {if (cookieutils.user_cookie.equals (cookie.getname ())) {string value = cookie.getValue (); // Определите, является ли символ пустым if (stringUtils.isnotblank (value)) {string [] spilled = value.split (","); String LoginName = DLIFLED [0]; String Password = пролитый [1]; out.println (loginname + "добро пожаловать в систему"); }}}}} %> <s: a action = "LoginAction! Logout.Action" пространство имен = "/"> Safe Exit </s: a> </body> </html>Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!