В этой статье представлены примеры перенаправления и перехвата в Springmvc. Это разделено с вами следующим образом:
Переменные параметры При разработке методов используйте数据类型... для объявления типов параметров, например: public static void function(int... numbers)
При реализации тела метода параметры переменной обрабатываются как массив
открытый тест класса {public static void main (string [] args) {System.out.println (test.sum (1,2,3)); System.out.println (test.sum (1,2,3,4,54)); } public static int sum (int ... numbers) {int sum = 0; for (int i = 0; i <natfy.length; i ++) {sum+= number [i]; } return sum; }}ПРИМЕЧАНИЕ. В каждом методе только 1 параметр переменной допускается максимум, и если есть переменный параметр, он должен быть последним параметром.
Пересылка и перенаправление
В методе обработки запросов в контроллере метод возврата строки - пересылка. Переадресованное значение - это имя компонента представления, например, возврат «логин», который по существу получит страницу, которая наконец -то отображается на основе Resolver View (ViewResolver). Синтаксис возврата перенаправления: путь представляет перенаправление. Содержание на правой стороне перенаправления: это путь. Этот путь обычно использует относительный путь и ссылается на основе пути в адресной строке текущего клиента в качестве стандарта. Например, текущий адрес: http: // localhost: 8080/project/user/reg.do, а затем возврат «redirect: login.do», а затем перенаправить на http: // localhost: 8080/project/user/login.do, если вы вернете "rediRect: /main/index.do" или return ", redirce, haine/index. перенаправить на http: // localhost: 8080/project/main/index.do
вперед:
Метод по умолчанию, но вы также можете использовать возврат «
Возвращенное представление должно быть представлением, которое будет направлено в указанное представление после прохождения через анализатор представления.
перенаправить:
Перенаправление: return "redirect: login.do"
Возвращает путь к методу контроллера, а не в представление. Это не пройдет через анализатор вида, но будет прыгать напрямую.
Пример
@Requestmapping (value = "/harder_reg.do", method = requestMethod.post) public String handleReg (пользователь пользователь, ModelMap Map) {try {userService.reg (user); System.out.println («Зарегистрирован успешно!»); вернуть "перенаправление: login.do"; // перенаправление на метод управления login.do, login.do соответствует возврату к login.jsp} catch (usernameconflictexception e) {System.out.println (e.getMessage ()); map.put ("errormessage", e.getmessage ()); вернуть "ошибку"; }} @Requestmapping (value = "login.do") public String handleLogin () {return "login"; }Перехватчик
Основные понятия
Используя перехватчик
Пользовательский класс перехвата
Создать класс перехвата (demointerceptor) для реализации интерфейса Handlerinterceptor
Общедоступный класс Demointerceptorimploms handlerInterceptor { /*** Called перед процессором выполняет* @param запрос httpservlectrequest, который может получить параметры запроса и т. Д.* @param response httpservletresponse объект* @param handler -объект контроллера. Если верно возвращается, будут выполнены последующие перехватчики и процессоры */ Public Boolean Prehandle (httpservletRequest, httpservletresponse response, обработчик объекта) выбрасывает исключение {System.out.println («Prehandler выполнение Demointerctor»); вернуть истину; } / ***** Posthandle (httpservlectrequest -запрос, ответ httpservletresponse, обработчик объекта, модель и модель и модели и модели), выбросы исключения { /*** 1. Вы можете спроектировать свою собственную логику, например, в некоторых случаях возвращайте false, возвращайте истинность* 2. System.out.println ("Handler:"+Handler); System.out.println («Поставка исполнения Demointerceptor»); // Установить имя представления, затем после завершения выполнения он перейдет на страницу index.jsp // modelandView.setViewName ("index"); } /** * Вызов * После завершения обработки запроса, общедоступное void -последующее сообщение (запрос httpservlectrequest, httpservletresponse, обработчик объекта, исключение Ex) Throws Exception {System.out.println («Выполнение последствия Demointerceptor»); }}Настройка в файле конфигурации SpringMVC
Конфигурация
Должен быть настроен в вышеуказанном порядке, в противном случае будет сообщена ошибка
<!-Настройте перехватчик, где можно настроить несколько перехватчиков-> <MVC: Interceptors> <MVC: Interceptor> <!-Настройка пути перехвата и перехват всех сопоставлений методов процессора в/пользователь, например: http: // localhost: 8080/springmvc/user/login.do. <MVC: mappingPath = "/user/*"/> <!-Настройка метода контроллера, который не перехвачен перехватчиком, это необязательная конфигурация, такая как http: // localhost: 8080/springmvc/user/index.do, это не будет перехвачено-> <mvc: excload-mappingpath = "/user/user/index./index./> andex./index./index./index./index./index./index./index./index./index./index./index./index.do. <mvc: exclude-maptingpath = "/user/login.do"/> <!-Настройте бобы перехватчика, указав полное имя класса-> <beanclass = "cn.tedu.spring.interceptor.demointerceptor"> </bean> </mvc: receptor> </mvc: interceptor>
Метод реализации
Public Boolean Prehandle (httpservlectrequest, httpservletresponse, обработчик объекта)
public void posthandle (httpservletrequest, httpservletresponse, обработчик объекта, ModelandView ModelandView)
Public void -последствия (запрос httpservletrequest, httpservletresponse, обработчик объекта, исключение Ex)
Демонстрационная проверка входа в систему
Пользовательский перехватчик (LoginInterceptor)
Конкретный процесс написан очень четко в методе Prehandler
Открытый класс loginInterceptorimploms handlerinterceptor { / * * Вызовите до выполнения процессора (не-Javadoc) * 1. Получить сеанс * 2. Прочтите значение UID в сеансе * Если нулевой, это означает, что нет входа в систему, а затем прямо перенаправить в интерфейс Login и вернуть False в одно и то же время. Нет необходимости выполнять последующий процесс*, если не нулевой, это означает, что он был вошел в систему, а затем непосредственно возвращать True и продолжать выполнять последующего перехвата или процессора*/ public Boolean Prehandle (httpservletrequest, httpservletresponse response, объектный ручной) throus exception {httpsession session = requessession ();););); // получить объект сеанса uid = session.getattribute ("uid"); // Читать объект в сеансе // Если UID существует, то вы можете войти в систему и заполнить if (uid! = Null) {return true; // вернуть true, если вход в систему успешно, вам необходимо выполнить последующий процесс} response.sendredirect (request.getContextPath ()+"/user/login.do"); // перенаправить на интерфейс входа в систему вернуть false; // возвращать false, последующий процесс не необходимо выполнять, и он непосредственно прерывается} public void poshandle (httpservletrequest, httpservletresponse, обработчик объекта, модель и модель модели и исключение {{} public void shustcompletion udsepless exception encemple exception udsepsess udsepsess udsepsess udsepsess usepsys usepsy encepsess usepsy ensepsy encepsys ensepsy encepssysson {}}Настройка перехватчика в Springmvc
Так как здесь он просто прыгает в центр пользователей и должен проверить вход, он просто соответствует user_center.do
<!-Настройте Interceptors, где можно настроить несколько перехватчиков-> <MVC: Interceptors> <MVC: Interceptor> <MVC: mappingPath = "/user/user_center.do"/> <beanclass = "cn.tedu.spring.interceptor
Порядок выполнения нескольких перехватчиков
Выполните в соответствии с заказом, настроенным в файле конфигурации SpringMVC, то есть порядок перехватчиков, настроенных в соответствии с <MVC: Interceptors>. Если перехватчик выполняется на том же пути, то первый сфигурированный первый интерцептор
Разница между перехватчиком и фильтром (основное различие)
Суммировать
Перехватыватели могут использоваться, когда несколько запросов требуют одинаковых или чрезвычайно похожих задач.
Управляйте перехватчиком хорошо, тогда вам необходимо настроить его в файле конфигурации Springmvc
В <MVC: Interceptors>, если настроены несколько <MVC: Interceptors>, несколько перехватчиков сформируют цепь перехватчиков. Если настроены несколько перехватчиков, они будут перехватывать один и тот же путь, а затем они будут выполнены в порядке настроенных узлов.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.