El blog cuenta el uso de interceptores en forma de una demostración.
La estructura del proyecto se muestra en la figura:
Jar necesario: se requieren frascos para la configuración de SpringMVC y los frascos necesarios para JSTL
Descripción de la función del paquete SpringMVC:
AOPALLIANCE.JAR: Este paquete es un paquete API AOP Alliance, que contiene interfaces para facetas. Por lo general, otros marcos, como la primavera que tienen funciones de tejido dinámico, dependen de este frasco
Spring-Core.jar: este archivo JAR contiene las clases de herramientas básicas básicas del marco de Spring. Todos los demás componentes de Spring deben usar las clases en este paquete, que es el núcleo básico de otros componentes. Por supuesto, también puede usar estas clases de herramientas en su propio sistema de aplicaciones.
Registro de dependencia de la dependencia externa, (log4j).
Spring-Beanss.Jar: Este archivo JAR es utilizado por todas las aplicaciones. Incluye acceder a archivos de configuración, crear y administrar frijoles, y realizar la inversión de control /
Las operaciones de inyección de dependencia (COI/DI) son todas las clases relacionadas. Si la aplicación solo requiere soporte BASIC IOC/DI, introduce archivos spring-core.jar y spring-beanss.jar.
Spring-AOP.JAR: este archivo JAR contiene el soporte de metadatos de clase y nivel de origen requerido cuando se usa la función AOP de Spring en su aplicación. Use funciones de primavera basadas en AOP, como la gestión de transacciones declarativas, y también incluya este paquete JAR en la aplicación.
Dependencias externas núcleos de resorte (primavera, AOP Alliance, CGLIB, Commons Atributes).
Spring-Context.jar: este archivo JAR proporciona muchas extensiones al núcleo de primavera. Se pueden encontrar todas las clases que necesita usar la función Spring ApplicationContext, JDNI
Todas las clases requeridas, componentes de instrumentación y clases relacionadas para la validación de verificación.
Dependencia externa de primavera, (Spring-AOP).
Spring-Context-Support: Spring-Context Extension Support, utilizado para MVC
Spring-Web.jar : este archivo JAR contiene las clases principales requeridas para su uso en Spring Framework durante el desarrollo de aplicaciones web, incluidas las clases que cargan automáticamente las características del contexto de la aplicación web, los puntales y las clases de integración JSF, las clases de soporte para las cargas de archivos, las clases de filtros y una gran cantidad de clases auxiliares de herramientas.
Dependencia externa Spring-Context, Servlet API, (JSP API, JSTL, Commons FileUpload, COS).
Spring-Webmvc.Jar: este archivo JAR contiene todas las clases relacionadas con el marco de Spring MVC. Incluye servlets, marco MVC web, controlador y vista de vista para el marco. Por supuesto, si su aplicación usa un marco MVC independiente, no necesita ninguna clase en este archivo JAR.
Dependencia externa Spring-Web, (soporte de resorte, mosaicos, itext, POI).
Spring-Aspects.jar: proporciona soporte para SuppectJ para que las funciones orientadas a los aspectos puedan integrarse fácilmente en IDE, como Eclipse AJDT.
Dependencias externas.
Spring-JDBC.JAR: este archivo JAR contiene todas las clases que encapsulan el acceso de datos JDBC de Spring.
Dependencia externa de primavera, Spring-Dao.
Spring-test.jar: encapsulación simple de marcos de prueba como Junit
Spring-TX.Jar: Spring's Jar para el procesamiento de transacciones TX
Spring-Expression.jar: lenguaje de expresión de primavera
Escribe un controlador:
paquete com.mvc.Action; import javax.servlet.http.httpsession; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; /** * Controlador autenticado de inicio de sesión */@Controller public class logincontrol {/** * Login * @param session * httpsession * @param username * username * @param contraseña * contraseña * @return */@RequestMapping (value = "/login") public String login (httpsession sesion, string username, string contraseña) drogue la excepción {///salva la información en la sesión pública en la sesión de la sesión de la sesión. session.SetAttribute ("Nombre de usuario", nombre de usuario); // Redirección de retorno "Redirección: Hello.Action"; }/** * Salga del sistema * @param Session * Session * @return * @throws Exception */@RequestMapping (value = "/logrout") public String String logrout (Httpsess Session) lanza la excepción {// Clear Session Session.Invalidate (); return "Redirect: Hello.Action"; }} Escribe un interceptor:
paquete com.mvc.interceptor; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import javax.servlet.http.httpsession; importar org.springframework.web.servlet.handlerinterceptor; importar org.springframework.web.servlet.modelandview; /** * Login authentication interceptor*/ public class LoginInterceptor implements HandlerInterceptor{ /** * Call this method after the Handler is executed*/ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exc) throws Exception { } /** * After the Handler is executed, the ModelAndView returns to call this method before the ModelandView devuelve*/public void postthandle (httpservletRequest solicitud, httpservletResponse respuesta, manejador de objeto, modelandView modelandView) lanza la excepción {}/***Este método se llama antes del manejador*/public Boolean prehandle (htttpServrequest solicitud, httpSeServletResseponse respuesta, excepción de la excepción de la excepción de la excepción de la excepción de la excepción de la excepción de la excepción de la excepción de la excepción de la excepción), la excepción de la excepción de la excepción de la excepción), la excepción de la excepción de la excepción de la excepción), la excepción de la excepción de la excepción de la excepción de la excepción), la excepción de la excepción), la excepción de la excepción de la excepción de la excepción de la excepción de la excepción de la excepción. Url cadena url = request.getRequesturi (); //Url:login.jsp es accesible públicamente; Esta demostración se intercepta excepto login.jsp, otras URL se interceptan si (url.indexof ("login.action")> = 0) {return true; } // Obtener sesión Httpsession Session = request.getSession (); String username = (string) session.getAttribute ("UserName"); if (username! = null) {return true; } // Si las condiciones no cumplen con las condiciones, salte a la solicitud de la interfaz de inicio de sesión. GetRequestDispatcher ("/web-Inf/jsp/login.jsp"). Adelante (solicitud, respuesta); devolver falso; }} Archivo de configuración de SpringMVC:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: aop = "http://www.springframework.org/schema/aop" "" "" "" "" "" "" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.0.xsd " Componente Scan-> <!-Escanee la acción, registra en el contenedor Spring y configure automáticamente la acción en el contenedor Spring-> <context: Component-Scan base-Package = "com.mvc.action"/> <!-Project Handler <bean name = "/hello.action"> </bean>-> <!-Processor Mapper Handlermapping-> <> <> <Bean> <Bean> MessageConvers <Bean> </Bean> </list> </property> </ Bean> <!-Ver resolución-> <!-Parse JSP, soporte predeterminado para jstl-> <Bean> <Property Name = "ViewClass" Value = "Org.springframework.web.servlet.view.jstlview"> </propiedad> <name de propiedad = "Value ="/"/" JSP/JSP/JSP/JSP/JSP/JSP/JSP/JSP/JSP/JSP/"Propiedad/" name = "Suffix" Value = ". JSP" /> </ Bean> <!-En el desarrollo real, generalmente necesita configurar la etiqueta MVC: Conducida por anotación. Esta etiqueta es para habilitar la anotación-> <mvc: annotation-riven> </mvc: annotation-riven> <!-interceptor-> <mvc: interceptores> <!-múltiples interceptores, ejecutados secuencialmente-> <mvc: interceptor> <mvc: mapping ruta = "/**"/> <bean> </mvc: interceptor> </MVC: Interceptores> </Beans>
Interfaz de inicio de sesión:
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%string path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <Head> <base href = "<%= BasePath%>" http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type="text/css" href="styles.css"> --> </head> <body> <form action="${pageContext.request.contextPath}/login.action" method="post"> Username:<input type="text" name="username" /><br> Password:<input type="text" name="password" /><br> <input type = "enviar" value = "Login"/> </form> </body> </html> Después de iniciar sesión con éxito, salte a la interfaz
hola.jsp
<%@page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@taglib uri = "http://www.springframework.org/tags" prefix = "primavera"%> <%@taglib uri = "http://wwww.springfringframe.org.orgswork.orgs" prefix = "form" %> < %@taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> < %string path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = " http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type="text/css" href="styles.css"> --> </head> <body> Current user:${username} <c:if test="${username!=null}"> <a href="${pageContext.request.contextPath }/logout.action">Exit</a> </c:if> ${message} </body> </html> HELOCONTROL.JAVA, lo escribo en forma de Helloworld, y necesito modificarlo de acuerdo con el proyecto.
paquete com.mvc.Action; importar org.springframework.stereotype.controller; importar org.springframework.ui.model; importar org.springframework.web.bind.annotation.requestMapping; // Etiquete esta clase como un procesador de controlador @Controller Class pública HelloAction {@RequestMapping ("/Hello") // Desarrolle la URL correspondiente a esta clase de control Public String Hello (Model Model) {String Message = "SpringMvc"; // Agregar atributo para el modelo modelo.addattribute ("mensaje", mensaje); devolver "hola"; } // public ModelAndView HandLerequest (solicitud de httpservletRequest, // httpservletResponse Respuesta) arroja una excepción {// // // indica una línea de información en la página // string Message = "¡Hola mundo!"; // // // Muestra la información en la página a través del objeto de solicitud // //request.setattribute("Message ", mensaje); // // ModelAndView ModelAndView = new ModelAndView (); // // equivalente a request.setAttribute (), pase los datos a la página para mostrar // // data de modelo // modelandview.addoBject ("mensaje", mensaje); // // establecer View // ModelAndView.SetViewName ("Hello"); // // return ModelAndView; //}} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.