پروژه ساده helloWorld با Spring
سلام .
من یه پرژه ساده دارم که به ازای رفتن به ادرس greeting.html کنترلر یه پیغامی رو نشون میده .
ولی نمیدونم چرا اجرا نمیشه ؟ ! به نظرم مشکلش dispatcherservlet not found باشه ... فایلهارو پائین میزارم
درضمن از maven استفاده نکردم ...
web.xml :
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>FitnessTracking</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>greeting.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>fit</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/servlet-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>fit</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
servlet-config.xml :
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schem...ng-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schem...ring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="com.amir.controller"></context:component-scan>
<!-- <bean class="org.springframework.web.servlet.view.Intern alResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix"
value=".jsp" /> </bean> -->
<bean
class="org.springframework.web.servlet.view.Intern alResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>
helloController.java :
package com.amir.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMap ping;
@Controller
public class helloController {
@RequestMapping(value = "/greeting")
public String sayHello(Model model) {
model.addAttribute("greeting", "hello world !");
return "hello !";
}
}
<%@ page language="java" contentType="text/html; charset=windows-1256" pageEncoding="windows-1256"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1256">
<title>Insert title here</title>
</head>
<body>
<h1>${greeting}</h1>
</body>
</html>
کلا این چندمین پروزه ای هست که نمیتونم اجراش کنم ؟! چندین بار نسخه spring و اکلیپس رو تغییر دادم و سرور جدید ساختم ولی باز هم نشد .
حالا دقیق نمیدونم مشکل من کجاست ؟ تو کد هست یا مثلا تو کتابخونه و ... ؟درضمن تو build path کتابخانه های Spring 4 + common log هم موجوده .
اینم خود پروژه
نقل قول: پروژه ساده helloWorld با Spring
این خط رو دوباره چک کن:
<servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class>
وسطش فاصله افتاده تو کدت؟
ضمنن خود خطا رو بزار اینجا
نقل قول: پروژه ساده helloWorld با Spring
نقل قول:
نوشته شده توسط
cups_of_java
این خط رو دوباره چک کن:
<servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class>
وسطش فاصله افتاده تو کدت؟
ضمنن خود خطا رو بزار اینجا
چک کردم تو خود کد درست بود .
ببخشید اصلا حواسم نبود :
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1571)
at org.apache.catalina.core.DefaultInstanceManager.lo adClass(DefaultInstanceManager.java:530)
at org.apache.catalina.core.DefaultInstanceManager.lo adClassMaybePrivileged(DefaultInstanceManager.java :512)
at org.apache.catalina.core.DefaultInstanceManager.ne wInstance(DefaultInstanceManager.java:139)
at org.apache.catalina.core.StandardWrapper.loadServl et(StandardWrapper.java:1148)
at org.apache.catalina.core.StandardWrapper.allocate( StandardWrapper.java:864)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:134)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(A ccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.p rocess(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnect ionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProce ssor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker( Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$Wrapping Runnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
اینم خود عکس مرورگر :
http://upload7.ir/imgs/2014-09/12598759671458390861.png
نقل قول: پروژه ساده helloWorld با Spring
خوب داره میگه کلاس org.springframework.web.servlet.DispatcherServlet رو پبدا نمی کنه دیگه
در این صورت یا اسم کلاس اشتباه هست یا اینکه جار فایل مربوطش رو توی WEB-INF/lib کپی نکردی دیگه
نقل قول: پروژه ساده helloWorld با Spring
خب مگه ما فایل های جار spring رو که همین dispatcherServlet هم تو اوناست رو به build patch پروژه اضافه نمیکنیم ؟ مگه باید به /WEB-INF/lib/ هم اضافه کنیم ؟ تو هیچ کدوم از اموزشها این قسمت رو ندیدم ؟ !
نقل قول: پروژه ساده helloWorld با Spring
از ant استفاده میکنید؟
نقل قول:
مگه باید به /WEB-INF/lib/ هم اضافه کنیم ؟
مگه شما وقتی jar فایل درست میکنی lib های پروژه تونو به jar اضافه نمیکند؟ خب اینم دقیقا همون سناریو دیگه...
نقل قول: پروژه ساده helloWorld با Spring
خب من الان کلیه فابلهای JAR فریم ورک SPRING رو به build patch اضافه کردم و این کلاس dispatcherServlet هم تو همون جار ها هست
الان باید همون کلاس هارو دوباره به WEB-INF/lib اضافه بکنم ؟!
http://upload7.ir/imgs/2014-09/31038502824124463895.png
نقل قول: پروژه ساده helloWorld با Spring
بله، من الان دقیقا نفهمیدم چیکار کردید، اونجایی که فلش زدی لازم نیست تو همون فولدر webapps تامکت پروژتو پیدا کن بعد توی WEB-INF/lib کپی کن لایبرری هاتو...یا اگه از ant استفاده میکنی دیگه لازم نیست خودش اینکارو میکنه فقط تو build.xml اینو اضافه کن (با فرض اینکه build.xml ات کامله) :
<property name="lib.dir" value="${project.dir}/lib"/>
و این:
<target name="copy-lib">
<sequential>
<copy todir="${deploy.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}">
</fileset>
</copy>
</sequential>
</target>
نقل قول: پروژه ساده helloWorld با Spring
اخه من تا حالا از هر کتابخونه استفاده کردم این کارو نکردم ! تو این tutorial ها هم هیچ کدوم نگفته بودن که باید اسکریپت ant بنویسی و یا با تامکت درگیر بشی . اصولا وقتی پروژه وب میسازی تو اکلیپس خودش باید کانفیگ ها مربوطه رو انجام بده .
به نظرم مشکل از جای دیگری باشه ؟!
نقل قول: پروژه ساده helloWorld با Spring
ببین دو تا بحثه:
1 اینکه اون لایبرری ها رو IDE شما بشناسه تا بتونه تو محیط برنامه نویسی (ویرایشگر کد و ...) برات خدمات بده و اونا رو قرمز نکنه مثلن....
2 اینکه موقع اجرا تامکت همون جار ها رو ببینه و بتونه برنامه رو اجرا کنه برات
این دوتا موضوع کاملن از هم جدا هستن. اما شما برای مدیریت درسته اینا یکی از این کار ها رو بکنی:
یا محیطت (IDE) خودش این deploy درست رو برات انجام بده (در این صورت تامکت رو خودش میاره بالا وقتی run رو میزنی) که حالا یا تو خودش هست یا باید پلاگین های JavaEE رو نصب کنی... من اکلیپس رو یادم نیست.. اما بسته به نسخه و ویرایش اکلیپست داره... باید تنظیمش کنی.
یا اینکه برسی سراغ ابزار های build و ... مثل maven و ant که اینا خودشون برات اینکارو انجام بدن...
تو شرکت ها از دومی استفاده میشه برای اینکه به IDE وابسته نشن.
نقل قول: پروژه ساده helloWorld با Spring
ممنون از پاسختون .
:قلب:
از maven استفاده کردم حل شد !
بازم ممنون از راهنمایی همه دوستان .:تشویق: