Софтуерно Инженерство
Loading...
+ Нов въпрос
supersane avatar supersane 233 Точки

[Java Web Development] Spring MVC Issue

Здравейте, решавам си домашната от Spring MVC и се случва нещо много странно. За пръв път се захващам със Spring MVC проект, и още правя някои неща на сляпо от конфигурационна гледна точка, докато се ориентирам. Значи нали при създаването на Spring MVC проект автоматично се създава home страница, която отговаря на "/" url. При мен обаче това не се получава, и тествах няколко различни проекта. Ако създам проект с имената "test", "bank" работи default-ната страница, ако използвам име за проекта от сорта на "WebBankingMvc", "BankingMvc", не ми зарежда "/" директорията. Има нещо нередно, но не мога да го открия. Под "не ми се получава" имам предвид, че при опит да достъпя "localhost:8085/WebBankingMvc/" ми казва, че не е открит ресурс(The requested resource is not available.)

Ето и част от файловете ми:
servlet-context.xml
WebBanking(Interface)
WebBankingService(Implementation)
BankController
web.xml
pom.xml

едит: Още един въпрос. От видеото на лекцията не ми стана ясно как се предава информацията от jsp-то към самия controller? Примерно във view-то имаше таблица за попълване на информация за студент, но реално погледнати те са просто стрингове. Как в метода на контролера като параметър се подава цял Student, къде се създава и подава този обект? Също така как може да се достъпва останалата информация, която върви с изпратения request?

Тагове:
0
Java Web Development 08/04/2016 00:18:10
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

И аз ще стрелям на сляпо, тъй като Spring има хиляди начни да се конфигурира и този който ползваш, не е този, който аз ползвам.

В първия XML пробвал ли си да смениш базовия пакет да тговаря на casing-а на проекта - <context:component-scan base-package="bg.jwd.webbanking" />

0
supersane avatar supersane 233 Точки

Ами първо ги бях разхвърлял, в отделни пакети, предположих да не би заради това да не намира, и ги събрах по следния начин: цък, но пак нищо. Ти това ли имаше предвид?

0
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Не, имах предвид, че базовия ти пакет е този, който деплойваш най-вероятно. Съответно него трябва да го кръстиш с големи букви (ако това ти е крайната цел)

0
supersane avatar supersane 233 Точки

Да, там е бил проблема. Името на проекта беше "WebBankingMvc", а на пакета "bg.jwd.webbanking", следователно трябваше да търся на името на пакета(webbanking), а не на проекта. :)

0
Jinjaar avatar Jinjaar 347 Точки

На първият ти въпрос: Зависи как си кръстил главните пакети, мойте са bg.softuni.socialnetwork и главният ми route е localhost:8080/socialnetwork/.

На вторият ти въпрос : Controllera комуникира с JSP през Model към който закачаш данните който искаш. 

Пример:

RequestMapping(value = UrlConstants.USER_HOME_PAGE , method = RequestMethod.GET)
    public String getUserInfo(Model model) {
        String user =UserUtils.getUser().getUsername();
         UserProfile currentUser = userService.getUsers(user).get(0);
         model.addAttribute("user",currentUser);

        return "home";
    }

Така закачам currentUser( UserProfile ) object към model-a като в JSP можеш да достъпиш информацията за него с ${{ user.username}} примерно.

1
08/04/2016 00:36:40
supersane avatar supersane 233 Точки

Разбрах примера ти за втория ми въпрос. А как controllerа комуникира с JSP в обратна връзка(JSP -> Controller). В демото от лекцията в JSP-то има формичка за попълване на информация за студент. След натискане на submit бутона, как се достъпва тази информация от controllera, за да създаде обект от тип Person и да го добави в ArrayList-а със студенти. Защото в демото се вижда как се прави метод, който е мапнат на дадено url и приема като параметър обект от тип Person, а къде се създава и инциализира този обект? 

За първия ми въпрос, все още имам проблема и ми дава, че не може да открие ресурса, и това ме забива да си доразвия домашното, сега ще продължа да мъча от къде идва проблема. Благодаря за примера ти на втория ми въпрос, доста ми се изясниха нещата.

edit: да беше прав и за първия ми върпос, проекта ми се казва WebBankingMvc, и на този адрес не мога да го достъпя, но пакета ми е bg.jwd.webbanking и когато напиша localhost:8085/webbanking, вече го достъпвам. Супер, сега мога да продължа по писането на домашната. Благодаря отново!

0
08/04/2016 09:26:33
naskoni avatar naskoni 68 Точки

Здравей,

В jsp-to, имената на input полетата отговарят на пропъртитата на класа Student и автоматично се сетват, защото в метода, който отговаря на submit (action="/uni/addStudentSave")  е обявено, че този клас е ModelAttribute:

public String addStudentSave(Model model, @ModelAttribute(value = "student") Student student)

и така в метода можеш да работиш с този обект.

2
supersane avatar supersane 233 Точки

Благодаря за отговора!

0