Step 1:
create a dummy JSP portlet to begin with by using the following command
create.bat weather "Weather Spring Portlet"
================================================================
Step 2:
create a folder "context" under "/docroot/WEB-INF"
create file "weather-portlet.xml" under "context"
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "../../dtd/spring-beans.dtd">
<beans>
<bean id="weatherService" class="com.sample.weather.WeatherServiceImpl" />
<bean id="weatherController" class="com.sample.weather.WeatherController">
<property name="weatherService" ref="weatherService" />
</bean>
<bean class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
<property name="portletModeMap">
<map>
<entry key="view" value-ref="weatherController" />
</map>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
================================================================
Step 3:
create file "application.xml" under "context"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "../dtd/spring-beans.dtd">
<beans>
<bean id="weatherService" class="com.sample.weather.WeatherServiceImpl" />
<!-- Default View Resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="cache" value="false"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
================================================================
Step 4:
create file "view.jsp" docroot/jsp
<%@ page contentType="text/html" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table border="1">
<tr>
<th>City</th>
<th>Temperature</th>
</tr>
<c:forEach items="${temperatures}" var="temperature">
<tr>
<td>${temperature.key}</td>
<td>${temperature.value} </td>
</tr>
</c:forEach>
</table>
================================================================
Step 5:
create file WeatherController.java under /docroot/WEB-INF/src/com/sample/weather
package com.sample.weather;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.portlet.mvc.AbstractController;
public class WeatherController extends AbstractController {
private WeatherService weatherService;
public void setWeatherService(WeatherService weatherService) {
this.weatherService = weatherService;
}
public ModelAndView handleRenderRequestInternal(
RenderRequest request, RenderResponse response) throws Exception {
return new ModelAndView("view","temperatures", weatherService.getMajorCityTemperatures());
}
}
================================================================
Step 6:
create the interface WeatherService.java under /docroot/WEB-INF/src/com/sample/weather
package com.sample.weather;
import java.util.Map;
public interface WeatherService {
public Map<String, String> getMajorCityTemperatures();
}
================================================================
Step 7:
create the implementation WeatherServiceImpl.java under /docroot/WEB-INF/src/com/sample/weather
package com.sample.weather;
import java.util.HashMap;
import java.util.Map;
public class WeatherServiceImpl implements WeatherService {
public Map<String, String > getMajorCityTemperatures() {
Map<String, String > temperatures = new HashMap<String, String>();
temperatures.put("New York", "6.0");
temperatures.put("London", "10.0");
temperatures.put("Singapore", "5.0");
return temperatures;
}
}
Step 8:
Modify portlet.xml file
replace,
<portlet-class>com.sample.jsp.portlet.JSPPortlet</portlet-class>
with,
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
-------------------------
replace,
<init-param>
<name>view-jsp</name>
<value>/view.jsp</value>
</init-param>
with,
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/context/weather-portlet.xml</value>
</init-param>
----------------------------
insert
<portlet-mode>view</portlet-mode>
<portlet-mode>help</portlet-mode>
inside,
<supports> elements
================================================================
Step 8:
(insert the below contents into web.xml)
<display-name>Weather Portlet based on Spring</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>com.sample.weather</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context/application.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>ViewRendererServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ViewRendererServlet</servlet-name>
<url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>
================================================================
Step 9:
Copy the contents of "lib" folder to "WEB-INF/lib"
Wednesday, November 24, 2010
Spring Portlet
Posted by Arun on 11:11:00 AM
0 comments:
Post a Comment