Reputation: 14731
I have Glassfish3 server which is integrated with Eclipse Helios
I have added my sample Spring project to server using Add and Remove by right clicking server.
When I run http://localhost:8080/SpringHibernateJSFTest/insertJdbcContact.do
I am getting description The requested resource () is not available.
How can I resolve this error? What am I doing wrong?
Any help is highly appreciated.
My controller class
@Controller
public class JBTJdbcController {
@Autowired
com.service.SpringJdbcService mfssService;
@RequestMapping(value = "/insertJdbcContact", method = RequestMethod.GET)
public ModelAndView insertMemDtls() {
ModelAndView mav = new ModelAndView("JdbcInsert");
VngMem mfssbean = new VngMem();
mav.addObject("insertUser", mfssbean);
mav.addObject("status", "success");
return mav;
}
@RequestMapping(value = "/insertJdbcContact", method = RequestMethod.POST)
public ModelAndView insertContact(
@ModelAttribute("insertUser") VngMem vngmem) {
ModelAndView mav = new ModelAndView("JdbcInsert");
try {
mfssService.insertMfssMemDts(vngmem);
} catch (Exception e) {
e.printStackTrace();
}
mav.addObject("searchResultPost", vngmem);
return mav;
}
}
Here is web.xml
<display-name>SpringHibernateJSFTest</display-name>
<display-name>SpringMVC</display-name>
<welcome-file-list>
<welcome-file>welcome.do</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>
My applicationContext.xml
<context:annotation-config />
<context:component-scan base-package="com.controller,com.beans" />
<mvc:annotation-driven />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@server:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
<bean id="SpringJdbcDao" class="com.dao.SpringJdbcDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="SpringJdbcService" class="com.service.SpringJdbcServiceImpl">
<property name="springJdbcDao" ref="SpringJdbcDao"/>
</bean>
</beans>
My dispatcher-servlet.xml
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
I have JdbcInsert.jsp
in /WebContent/WEB-INF
Update 1
cannot Deploy SpringHibernateJSFTest
Deployment Error for module: SpringHibernateJSFTest: Exception while loading the app :
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException:
org.springframework.beans.factory.BeanDefinitionStoreException:
IOException parsing XML document from class path resource [applicationContext.xml];
nested exception is java.io.FileNotFoundException: class path resource
[applicationContext.xml] cannot be opened because it does not exist
Upvotes: 1
Views: 1998
Reputation: 7116
You should move:
<context:component-scan base-package="com.controller,com.beans" />
<mvc:annotation-driven />
to dispatcher-servlet.xml
.
In your dispacher-servlet.xml
the id of your InternalResourceViewResolver bean should be internalResourceViewResolver
, like bellow:
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
And your jsp files should be in /WEB-INF/jsp/ directory.
Thanks and happy coding!
Upvotes: 1
Reputation: 17774
Your ViewResolver
uses /WEB-INF/jsp/
prefix, while JdbcInsert.jsp
is located in /WEB-INF
, you should correct the prefix to "/WEB-INF/"
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
update You have declared <mvc:annotation-driven />
in the root Application Context instead of the Dispatcher Servlet Context, this may cause some problems, for example viewResolver
will be effectively invisible from the root application context.
Your mvc configuration should reside in the dispatcher servlet context.
Upvotes: 1