ورود

View Full Version : مبتدی: پروژه ساده helloWorld با Spring



A.iman
دوشنبه 10 شهریور 1393, 20:43 عصر
سلام .
من یه پرژه ساده دارم که به ازای رفتن به ادرس 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.DispatcherServlet</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/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-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.InternalResou rceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix"
value=".jsp" /> </bean> -->


<bean
class="org.springframework.web.servlet.view.InternalResou rceViewResolver"
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 هم موجوده .
اینم خود پروژه (http://s5.picofile.com/file/8138380592/FitnessTracking.rar.html)

cups_of_java
دوشنبه 10 شهریور 1393, 23:14 عصر
این خط رو دوباره چک کن:
<servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class>
وسطش فاصله افتاده تو کدت؟

ضمنن خود خطا رو بزار اینجا

A.iman
سه شنبه 11 شهریور 1393, 00:09 صبح
این خط رو دوباره چک کن:
<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

cups_of_java
سه شنبه 11 شهریور 1393, 09:24 صبح
خوب داره میگه کلاس org.springframework.web.servlet.DispatcherServlet رو پبدا نمی کنه دیگه
در این صورت یا اسم کلاس اشتباه هست یا اینکه جار فایل مربوطش رو توی WEB-INF/lib کپی نکردی دیگه

A.iman
سه شنبه 11 شهریور 1393, 10:40 صبح
خب مگه ما فایل های جار spring رو که همین dispatcherServlet هم تو اوناست رو به build patch پروژه اضافه نمیکنیم ؟ مگه باید به /WEB-INF/lib/ هم اضافه کنیم ؟ تو هیچ کدوم از اموزشها این قسمت رو ندیدم ؟ !

ahmad.mo74
سه شنبه 11 شهریور 1393, 11:42 صبح
از ant استفاده میکنید؟



مگه باید به /WEB-INF/lib/ هم اضافه کنیم ؟

مگه شما وقتی jar فایل درست میکنی lib های پروژه تونو به jar اضافه نمیکند؟ خب اینم دقیقا همون سناریو دیگه...

A.iman
سه شنبه 11 شهریور 1393, 12:16 عصر
خب من الان کلیه فابلهای JAR فریم ورک SPRING رو به build patch اضافه کردم و این کلاس dispatcherServlet هم تو همون جار ها هست
الان باید همون کلاس هارو دوباره به WEB-INF/lib اضافه بکنم ؟!
http://upload7.ir/imgs/2014-09/31038502824124463895.png

ahmad.mo74
سه شنبه 11 شهریور 1393, 12:30 عصر
بله، من الان دقیقا نفهمیدم چیکار کردید، اونجایی که فلش زدی لازم نیست تو همون فولدر 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>

A.iman
سه شنبه 11 شهریور 1393, 14:44 عصر
اخه من تا حالا از هر کتابخونه استفاده کردم این کارو نکردم ! تو این tutorial ها هم هیچ کدوم نگفته بودن که باید اسکریپت ant بنویسی و یا با تامکت درگیر بشی . اصولا وقتی پروژه وب میسازی تو اکلیپس خودش باید کانفیگ ها مربوطه رو انجام بده .
به نظرم مشکل از جای دیگری باشه ؟!

cups_of_java
سه شنبه 11 شهریور 1393, 19:04 عصر
ببین دو تا بحثه:
1 اینکه اون لایبرری ها رو IDE شما بشناسه تا بتونه تو محیط برنامه نویسی (ویرایشگر کد و ...) برات خدمات بده و اونا رو قرمز نکنه مثلن....
2 اینکه موقع اجرا تامکت همون جار ها رو ببینه و بتونه برنامه رو اجرا کنه برات

این دوتا موضوع کاملن از هم جدا هستن. اما شما برای مدیریت درسته اینا یکی از این کار ها رو بکنی:
یا محیطت (IDE) خودش این deploy درست رو برات انجام بده (در این صورت تامکت رو خودش میاره بالا وقتی run رو میزنی) که حالا یا تو خودش هست یا باید پلاگین های JavaEE رو نصب کنی... من اکلیپس رو یادم نیست.. اما بسته به نسخه و ویرایش اکلیپست داره... باید تنظیمش کنی.

یا اینکه برسی سراغ ابزار های build و ... مثل maven و ant که اینا خودشون برات اینکارو انجام بدن...

تو شرکت ها از دومی استفاده میشه برای اینکه به IDE وابسته نشن.

A.iman
سه شنبه 11 شهریور 1393, 20:30 عصر
ممنون از پاسختون .

:قلب:
از maven استفاده کردم حل شد !
بازم ممنون از راهنمایی همه دوستان .:تشویق: