Professional Documents
Culture Documents
Agenda
FIT-HUFLIT
Including, Forwarding,
Redirecting to other Web
resources
FIT-HUFLIT
FIT-HUFLIT
FIT-HUFLIT
Static resource
FIT-HUFLIT
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/bann
er");
dispatcher.include(request, response);
FIT-HUFLIT
FIT-HUFLIT
Forwarding to
another
Web Resource
FIT-HUFLIT
FIT-HUFLIT
FIT-HUFLIT
How to do Forwarding to
another Web resource?
dispatcher.forward(request, response);
FIT-HUFLIT
Instructing Browser to
Redirecting to another
Web Resource
FIT-HUFLIT
Redirecting a Request
FIT-HUFLIT
Servlet Filters
FIT-HUFLIT
FIT-HUFLIT
FIT-HUFLIT
Solution
Solution
FIT-HUFLIT
Solution
FIT-HUFLIT
FIT-HUFLIT
FIT-HUFLIT
Servlet Filter
Programming APIs
FIT-HUFLIT
javax.servlet.Filter Interface
init(FilterConfig)
destroy()
FIT-HUFLIT
javax.servlet.Filter Interface
javax.servlet.FilterChain
javax.servlet.FilterConfig
javax.servlet.HttpServletResponseWrapper
FIT-HUFLIT
Servlet Filter
Configuration in
the web.xml file
FIT-HUFLIT
Configuration in web.xml
<filter>
</filter>
<filter-mapping>
</filter-mapping>
FIT-HUFLIT
FIT-HUFLIT
FIT-HUFLIT
Example: HitCounterFilter
public final class HitCounterFilter implements
Filter{
private FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) throws
ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
this.filterConfig = null;
}
// Continued in the next page.
FIT-HUFLIT
Example: HitCounterFilter
public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain) throws IOException, ServletException {
if (filterConfig == null) return;
StringWriter sw = new StringWriter(); PrintWriter writer = new PrintWriter(sw);
Counter counter = (Counter)
filterConfig.getServletContext().getAttribute("hitCounter");
writer.println("The number of hits is: " + counter.incCounter());// Log the resulting
string
writer.flush();
filterConfig.getServletContext().log(sw.getBuffer().toString()
);
...
chain.doFilter(request, wrapper);
...
}}
FIT-HUFLIT
HitCounterFilter Configuration
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC '-//Sun
Microsystems, Inc.//DTD Web
Application 2.3//EN'
'http://java.sun.com/dtd/webapp_2_3.dtd'>
<web-app>
<display-name>Bookstore1</display-name>
<description>no description</description>
...
FIT-HUFLIT
HitCounterFilter Configuration
<filter>
<filter-name>HitCounterFilter</filter-name>
<filter-class>filters.HitCounterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HitCounterFilter</filter-name>
<url-pattern>/enter</url-pattern>
</filter-mapping>
...
FIT-HUFLIT
Servlet
LifeCycle Events
FIT-HUFLIT
ServletContext
Startup/shutdown
Attribute changes
HttpSession
FIT-HUFLIT
Listener Registration
Web container
Listener Interfaces
ServletContextListener
ServletContextAttributeListener
sessionCreated/Destroyed(HttpSessionEvent)
HttpSessionAttributeListener
attributeAdded/Removed/Replaced(
ServletContextAttributeEvent)
HttpSessionListener
contextInitialized/Destroyed(ServletContextEvent)
attributedAdded/Removed/Replaced( HttpSessionBindingEvent)
HttpSessionActivationListener
FIT-HUFLIT
FIT-HUFLIT
Listener Configuration
<web-app>
<display-name>Bookstore1</display-name>
<description>no description</description>
<filter>..</filter>
<filter-mapping>..</filter-mapping>
<listener>
<listener-class>listeners.ContextListener</listener-class>
</listener>
<servlet>..</servlet>
<servlet-mapping>..</servlet-mapping>
<session-config>..</session-config>
<error-page>..</error-page>
...
</web-app>
FIT-HUFLIT
Servlet
Synchronization &
Thread Model
FIT-HUFLIT
Many Threads,
One Servlet Instance
FIT-HUFLIT
synchronized(this) {
myNumber = counter + 1;
counter = myNumber;
}
...
synchronized(this) {
counter = counter - 1 ;
}
FIT-HUFLIT
SingleThreadModel Interface
javax.servlet.SingleThreadModel
SingleThreadModel
FIT-HUFLIT
FIT-HUFLIT
Invoker Servlet
FIT-HUFLIT
FIT-HUFLIT
http://localhost:8080/myservlets/newservlet2
FIT-HUFLIT
Servlet 2.4
FIT-HUFLIT
Request Listeners
ServletRequestListener
ServletRequestAttributeListener
FIT-HUFLIT
SingleThreadModel Deprecated
Interface SingleThreadModel
Confusing
Does not solve thread safety issue completely
Session attribute
Static variable
Recommendation
FIT-HUFLIT
Internationalization
SetCharacterEncoding()
GetContentType()
FIT-HUFLIT
Passion!
FIT-HUFLIT