Key Technologies Primer / Apache Struts. Учебник для начинающих по ключевым технологиям.

→For more about security, see:
- J2EE Blueprints: Security
- SecurityFilter
- Spring Security
- The Struts SSL Extension for HTTP/HTTPS switching
0 Более подробную информацию о безопасности, см:
- Концепции J2EE: Безопасность
- SecurityFilter
- Безопасность Spring
- The Struts расширения SSL для коммутации HTTP/HTTPS
→One detail that can be configured in the Web application deployment descriptor is container-managed security. Declarative security can be used to protect requests for URIs that match given patterns. Pragmatic security can be used to fine-tune security make authorization decisions based on the time of day, the parameters of a call, or the internal state of a Web component. It can also be used to restrict authentication based on information in a database.
0 Одна из деталей, которая может быть настроена в дескрипторе разработки веб-приложения - безопасность управляемая контейнером. Декларативная безопасность может использоваться, чтобы защитить запросы для URI которые соответствуют данным образцам. Прагматическая безопасность может использоваться для тонкой настройки безопасности, принимая решение о авторизации на основе времени дня, параметров вызова или внутреннего состояния веб-компонента. Она также может использоваться для ограничения авторизации на основе информации в базе данных.
→Most aspects of an application's lifecycle are configured through an XML document called the Web application deployment descriptor. The schema of the descriptor, or web.xml, is given by the Java servlet specification.
0 Большинство аспектов жизненного цикла приложений настраивается с помощью XML-документа называемого дескриптор развертывания веб-приложения. Схема дескриптора, или web.xml, описана в спецификации сервлетов Java.
→Just as a HTTP server can be used to host several distinct websites, a servlet container can be used to host more than one web application. The Java servlet platform provides a well-defined mechanism for organizing and deploying web applications. Each application runs in its own namespace so that they can be developed and deployed separately. A web application can be assembled into a Web Application Archive, or WAR file. The single WAR can be uploaded to the server and automatically deployed.
0 Также, как HTTP-сервер может обслуживать несколько различных вебсайтов, контейнер сервлетов может быть использованным для обслуживание более, чем одного веб-приложения. Платформа сервлетов Java предоставляет четкий механизм для организации и размещения веб-приложений. Каждое приложение запущено в своем пространстве имен, поэтому они могут разрабатываться и размещаться раздельно. Веб-приложение может быть собрано в файле архива веб-приложения (Web Application Archive или WAR). Простой WAR может быть загружен на сервер и автоматически развернут.
→The Java Servlet specification extends the HTTP request/response cycle by allowing the request to be dispatched, or forwarded, between resources. The framework uses this feature to pass a request through specialized components, each handling one aspect of the response. In the normal course, a request may pass through a controller object, a model object, and finally to a view object as part of a single request/response cycle.
0 Спецификация сервлетов Java расширяет цикл запрос/ответ HTTP позволяя запросам быть отправленными или переправленными между ресурсами. Фреймворк использует эту возможность для пересылки запросов через специализированные компоненты, один вид ответа за каждую обработку. В обычной последовательности, запрос может проходить через контроллер объекта, модель объекта и, наконец, представление объекта как часть простого цикла запрос/ответ.
→For more about sessions, see:
- Maintaining Client State in The J2EE Tutorial
- javax.servlet.http.HttpSession
0 Для подробной информации о сессиях см.:
- Сохранение состояния клиента в руководстве по J2EE.
- javax.servlet.http.HttpSession
→Another important consideration is that session attributes occupy memory in your server in between requests. This can have an impact on the number of simultaneous users that your application can support. If your application requirements include very large numbers of simultaneous users, you will likely want to minimize your use of session attributes, in an effort to control the overall amount of memory required to support your application.
0 Также требует внимания то, что атрибуты сессии занимают место на вашем сервере между запросами. Это может оказать влияние на количество одновременно обслуживаемых вашим приложением пользователей. Если требования вашего приложения включают очень большое количество одновременно работающих пользователей, вам вероятно понадобиться минимизировать ваше использование атрибутов сессии в стремлении контролировать общее количество памяти, используемого вашим приложением.
→Unlike requests, you need to be concerned about thread safety on your session attributes (the methods these beans provide, not the getAttribute() and setAttribute() methods of the session itself). It is surprisingly easy for there to be multiple simultaneous requests from the same user, which will therefore access the same session.
0 В отличии от запросов, вы должны позаботиться о потоковой безопасности для ваших атрибутов сессии (обеспечивается методами этих компонентов, а не методами getAttribute() и setAttribute() самой сессии). Удивительно легко сделать несколько параллельных запросов от одного пользователя, которые из-за этого получат доступ к одной сессии.
→To avoid occupying resources indefinitely when a user fails to complete an interaction, sessions have a configurable timeout interval. If the time gap between two requests exceeds this interval, the session will be timed out, and all session attributes removed. You define a default session timeout in your web application deployment descriptor, and you can dynamically change it for a particular session by calling the setMaxInactiveInterval() method.
0 Чтобы избежать блокировки ресурсов, когда пользователю не удается завершить итерацию, у сессий есть настраиваемый интервал ожидания. Если временной промежуток между двумя запросами превышает этот интервал, у сессии истечет время ожидания и все атрибуты сессии будут удалены. Вы определяете время ожидания сессии по умолчанию для вашего веб-приложения используя дескриптор и вы можете динамически изменять его для конкретной сессии через вызов метода setMaxInactiveInterval().
→To alleviate this difficulty, the servlet API provides a programmatic concept called a session, represented as an object that implements the javax.servlet.http.HttpSession interface. The servlet container will use one of two techniques (cookies or URL rewriting) to ensure that the next request from the same user will include the session id for this session, so that state information saved in the session can be associated with multiple requests. This state information is stored in session attributes (in JSP, they are known as "session scope beans").
0 Чтобы нивелировать эти сложности, API сервлета предоставляет программную концепцию под названием сессия, представляющую собой объект реализованный интерфейсом javax.servlet.http.HttpSession. Контейнер сервлета будет использовать один из двух методов (cookie или перезапись URL) чтобы гарантировать, что следующий запрос от того же пользователя включал идентификатор сессии, поэтому информация о состоянии, сохраненная в сессии, может быть привязана к нескольким запросам. Информация о состоянии сохраняется в атрибутах сессии (в JSP они называются "компоненты области определения сессии").
→One of the key characteristics of HTTP is that it is stateless. In other words, there is nothing built in to HTTP that identifies a subsequent request from the same user as being related to a previous request from that user. This makes building an application that wants to engage in a conversation with the user over several requests to be somewhat difficult.
0 Одна из ключевых характеристик HTTP - отсутствие состояния. Другими словами, отсутствует что-либо, встроенное в HTTP, что связывало бы последующий и предыдущий запрос одного и того же пользователя. Это делает несколько затруднительным разработку приложения, обменивающегося с пользователем посредством некоторого количества запросов.
→For more about filters, see:
- Filtering Requests and Responses
- The Essentials of Filters
0 Для более подробной информации о фильтрах см.:
- Фильтрация запросов и ответов
- Основы фильтров.
→Struts 1.2 and earlier require your container to implement version 2.2 or later of the Servlet Specification, so those versions of the Struts framework do not use Filters internaly. Beginning with Struts 1.3, a container that supports version 2.3 or later of the Servlet Specification is required. Struts 2 uses a filter as the base of the controller, instead of a servlet.
0 Struts 1.2 и более ранние версии требуют от вашего контейнера поддержки версии 2.2 спецификации сервлетов или более поздних, из-за этого данные версии фреймворка Struts не имеют встроенной поддержки фильтров. Начиная с версии Struts 1.3, его контейнер поддерживает версию 2.3 спецификации сервлетов или более поздние. Struts 2 использует фильтры как основа контроллера вместо сервлетов.
→If you are using a servlet container based on version 2.3 or later of the Servlet Specification (such as Tomcat 4.x), you can take advantage of the new Filter APIs [javax.servlet.Filter] that let you compose a set of components that will process a request or response. Filters are aggregated into a chain in which each filter has a chance to process the request and response before and after it is processed by subsequent filters (and the servlet that is ultimately called).
0 Если вы используете контейнер сервлетов основанный на спецификации сервлетов версии 2.3 или более поздней (например, Tomcat 4.x), вы можете получить преимущества нового API фильтров [javax.servlet.Filter], которые позволят вам создавать набор компонентов, которые будут обрабатывать запрос или ответ. Фильтры встроены в цепочку в которой каждый фильтр имеет возможность обрабатывать запрос или ответ до или после обработки следующим фильтром (и в конечном счете вызывается сервлет).
→For more about the servlet response, see:
- Constructing Responses in The J2EE Tutorial.
0 Более подробную информацию об ответе сервлета см.:
- Построение ответов в руководстве по J2EE.
→Other presentation systems, like Velocity Tools for Struts, may delegate rendering the response to a specialized servlet, but the same pattern holds true. You create a template, and the dynamic response is generated automatically from the template.
0 Другие системы презентации, такие как Velocity Tools для Struts могут передавать визуализацию ответа специализированным сервлетам, но тот же паттерн остается в силе. Вы создаете шаблон и динамический ответ создается автоматически из него.
→When you are using presentation pages in a Model 2 application, you will not generally use the servlet response APIs directly. In the case of JavaServerPages, the JSP page compiler in your servlet container will convert your page into a servlet. The JSP servlet renders the response, interspersing dynamic information where you have interposed JSP custom tags.
0 Когда вы используете содержимое страницы в приложениях Model 2, вы, как правило, не используете API ответа сервлета напрямую. В случе JavaServerPages компилятор страниц JSP в вашем контейнере сервлета преобразует вашу страницу в сервлет. Сервлет JSP визуализирует ответ, перемежая его динамической информацией, которую вы вставили пользовательскими тегами JSP.
→An important principle in using the servlet response APIs is that any methods you call to manipulate headers or cookies MUST be performed before the first buffer-full of content has been flushed to the client. The reason for this restriction is that such information is transmitted at the beginning of the HTTP response, so trying things like adding a header after the headers have already been sent will not be effective.
0 Важный принцип в использовании API ответа сервлета в том, что любой метод, который вы вызываете для управления заголовками или cookie файлами должен быть завершен до того, как первая порция контента была отправлена клиенту. Основанием этого ограничения в том, что такая информация посылается в начале HTTP ответа, поэтому попытка сделать что-то похожее на добавление заголовка после того, как заголовки уже были оправлены, не будет эффективным.
→The primary purpose of a servlet is to process an incoming Servlet Request [javax.servlet.http.HttpServletRequest] and convert it into a corresponding response. This is performed by calling appropriate methods on the servlet response [javax.servlet.http.HttpServletResponse] interface. Available methods let you:
- Set Headers - You can set HTTP headers that will be included in the response. The most important header is the Content-Type header, which tells your client what kind of information is included in the body of this response. This is typically set to text/html for an HTML page, or text/xml for an XML document.
- Set Cookies - You can add cookies to the current response.
- Send Error Responses - You can send an HTTP error status (instead of a usual page of content) using sendError() .
- Redirect To Another Resource - You can use the sendRedirect() method to redirect the client to some other URL that you specify.
0 Главная цель сервлета - обработка входящего запроса сервлета [javax.servlet.http.HttpServletRequest] и преобразование его в соответствующий ответ. Это реализуется вызовом соответствующих методов на интерфейсе ответа сервлета [javax.servlet.http.HttpServletResponse]. Доступные методы позволяют:
- Установить заголовки - вы можете установить HTTP заголовки, которые были включены в ответ. Наиболее важный заголовок - заголовок типа содержимого, который сообщает вашим клиентам о типе информации, включенной в тело ответа. Обычно он установлен как text/html для HTML страниц или как text/xml для XML документов.
- Установить Cookies - вы можете добавить cookie-файлы в текущий ответ.
- Послать сообщение об ошибке - вы можете послать статус ошибки HTTP (вместо обычной страницы с контентом) используя sendError() .
- Переадресовать на другой ресурс - вы можете использовать метод sendRedirect(), чтобы переадресовать клиента на иные URL по вашему усмотрению.
→For more about the servlet request, see:
- Getting Information from Requests in The J2EE Tutorial.
0 Более подробную информацию о запросе сервлетов см.
- Получение информации из запросов в руководстве по J2EE.
Резюме
Пол:
мужчина
Родной язык:
русский
С нами:
с 28 ноября 2012 г. (5070 дней)
Не является членом клуба.
Деятельность:
66 версий перевода с общим рейтингом 0
3 комментария
Написать denderov личное сообщение