Предисловие
Я познакомил вас с вступительным руководством о Struts2. Я буду продолжать делиться знаниями, которые я узнал, проблемы, с которыми я столкнулся во время учебного процесса и решений. Конечно, если читатели найдут какие -либо проблемы, они могут сообщить мне в комментариях ниже. заранее спасибо
Доступ к веб -ресурсам в действии
веб -ресурсы
Так называемый веб-ресурс относится к нативным API, таким как httpservletrequest, httpservletresponse и ServletContext. В качестве контроллера разработки приложений B/S он должен быть в состоянии получить доступ к веб -ресурсам, таким как чтение и написание свойств для доменных объектов.
Как получить доступ к веб -ресурсам
Метод отделки от Servletapi: Чтобы избежать связи с Servletapi и облегчить модульное тестирование в действии, Struts2 инкапсулирует httpservletrequest, httpsession и Servletcontext, конструирует 3 объекта карты, чтобы заменить эти 3 объекта. В действии вы можете использовать соответствующие объекты карты HttpservletRequest, httpservletsession и httpservletcontext для сохранения и чтения данных.
public Object get(Object key) для передачи параметра запроса для достижения реализации.setRequest() , чтобы можно было вызвано во всех методах действия. Используйте ActionContext, чтобы получить код демонстрацию объекта домена
Отправьте запрос со страницы index.jsp на showpage.jsp и передайте запрос на Cluts 'Class objectAction.java для обработки запроса
В ObjectAction.java объект домена получается с помощью ActionContext, а значение свойства добавляется к нему, и запрос пересылается на showpage.jsp
На странице showpage.jsp мы можем получить значения каждого объекта домена
index.jsp
< %@ page contentType = "text/html; charset = utf-8" language = "java" %> <html> <head> <title> Руководство </title> </head> <body>-Передайте параметр имени, который может быть получен из объекта домена Params в Action Class, чтобы проверить объект Params Domain <href = "Showpage? > Приложение </a> </body> </html>
ObjectAction.java
пакет com.request.test; import com.opensymphony.xwork2.actionContext; import java.util.map; public class objectAction {public String print () {// Получить ActionContext actionContextContext = actionContext.getContext (); // Получить карту, соответствующую объекту Action Domain map <string> actionMap = actionContext.get. ApplicationMap.put ("ApplicationMap", "ApplicationMapValue"); // Получить карту, соответствующую карте сеанса <строка, объект> sessionMap = actionContext.getSession (); // назначить SessionMap на SessionMap.put ("SessionMap", "SessionMapValue"); // Получить карту, соответствующую запросу, не существует соответствующего метода get -strocquest (). «Использование () метод gat ()« Посмотреть метод get », так что« ke as ash wep stemport »(),« step stemport (), используя метод get, wat as as aspe stemport (as aspe wat hispe (). Object> requestMap = (map <string, object>) actionContext.get ("request"); // Получить карту, соответствующую запросу. Нет соответствующего метода getRequest (), поэтому используйте метод get ("запрос") карта <строка, объект> requestMap = (map <string, object>) actionContext.get ("request"); // be requestMap назначить requestmap.put ("requestMap", "requestMapvalue"); // ate capting to params map <string, object> actionsmap = actoctectrectores.ateparesparesparesparesparespare // detalpare offectspare offect. Значение параметра string params [] params = (string []) paramsmap.get ("name"); // Распечатать значение параметра в консольную систему.out.println (params [0]); вернуть "успех"; }}struts.xml (только отображать узел пакета)
<package name = "showvalue" extends = "struts-default"> <name = "showpage" method = "print"> <name = "success">/showpage.jsp </result> </action> </package>
showpage.jsp (только отображает содержимое тега тела)
<%-Получить значение объекта приложения домена-%> $ {applicationscope.applicationmap} <br> <%-Получить значение объекта домена сеанса-%> $ {sessioncope.sessionMap} <br> <%-Получить значение объекта запроса домена-%> $ {requestScope.requestmap} <br> <%- Объект-%> $ {requestScope.requestmap}Детали и внимание (перетащите изображение на новую вкладку страницы браузера, чтобы просмотреть более широкое изображение)
Доступ к веб -ресурсам с использованием интерфейса XXXAWARE
Как и в использовании ActionContext, отправка запроса на objectAction.java на странице index.jsp обрабатывается методом print2() .
Назначьте значение объекту домена в методе print2() в obhercemance.java и получите значение пропущенного параметра
Наконец, мы получаем значение объекта домена в showpage.jsp. Чтобы отличить от предыдущего, мы добавляем символы к каждому выходному значению для различения.
index.jsp (отображает часть тега тела)
<a href = "showPage2
ObjectAction.java
пакет com.request.test; import com.opensymphony.xwork2.actionContext; импорт org.apache.struts2.interceptor.applicationaware; import org.apache.struts2.interceptor.parameteraware; import org.apache.struts2.interceptor.requestaware; imports.atruts2.Interceptor java.util.map; Общедоступный объект класса реализует запросы, SessionAware, Applicationaware, ParameteraWare {Private Map <String, Object> requestMap; частная карта <string, object> sessionmap; Приватная карта <строка, объект> ApplicationMap; частная карта <string, string []> parameterMap; // showPage.Action. Выполнить необходимый метод public String print2 () {ApplicationMap.put ("ApplicationMap", "ApplicationMapval ==="); requestMap.put ("requestMap", "requestMapval ==="); sessionmap.put ("sessionmap", "sessionmapval ==="); String [] name = parameterMap.get ("name"); System.out.println (имя [0] + "===="); вернуть "успех"; } @Override public void setApplication (map <string, object> map) {this.applicationmap = map; } @Override public void setParameters (map <string, string []> map) {this.parametermap = map; } @Override public void setRequest (map <string, object> map) {this.requestmap = map; } @Override public void setSession (map <string, object> map) {this.sessionMap = map; }}struts.xml (отображает часть узла пакета)
<package name = "showvalue" extends = "struts-default"> <name = "showpage2" method = "print2"> <name = "success">/showpage.jsp </result> </action> </package>
showpage.jsp (так же, как и выше, он вообще не изменился)
Предложения по выбору
С помощью двух вышеупомянутых методов получения веб -ресурсов мы можем знать, что если у первого метода есть много методов действия, которые требуют вызова объектов домена, каждый метод должен быть реализован, в то время как второй метод должен быть реализован только один раз, поэтому в реальной разработке соответствующий метод выбран для реализации в соответствии с ситуацией.
В сочетании с Servletapi: можно получить больше ServletApis, и можно назвать собственные методы
Метод реализации здесь похож на приведенный выше метод реализации, поэтому я не буду говорить об этом.
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.