Annotated controllers with Spring MVC 2.5

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Groups

    Annotated controllers with Spring MVC 2.5 - Presentation Transcript

    1. Controller annotati con Spring MVC 2.5 Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    2. Spring MVC Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    3. The Old Style Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    4. The annotated style @Controller @RequestMapping({\"/my/*.html\"}) public class MyController { @RequestMapping public void index() { // do something useful } } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    5. Configuration No, thanks! (at least while I’m writing the code) Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    6. WEB-INF/web.xml <web-app> <display-name>JavaDay 2009 Demo Web Application</display-name> <!-- <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>javaday</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>javaday</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>redirect.jsp</welcome-file> </welcome-file-list> </web-app> Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    7. WEB-INF/javaday-servlet.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:context=\"http://www.springframework.org/schema/context\" xmlns:p=\"http://www.springframework.org/schema/p\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd\"> <context:component-scan base-package=\"it.jugpadova.javaday.controller\"/> <!-- <bean class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\"> <property name=\"webBindingInitializer\"> <bean class=\"it.jugpadova.javaday.JavadayBindingInitializer\"/> </property> </bean> --> <bean id=\"viewResolver\" class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\" p:prefix=\"/WEB-INF/jsp/\" p:suffix=\".jsp\" /> </beans> Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    8. Parancoe meta-framework www.parancoe.org Spring MVC + Hibernate/JPA + easy DAO + ...plugins Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    9. Using the model @Controller @RequestMapping(\"/contact/*.html\") public class ContactController { @Resource private ContactDao contactDao; @RequestMapping public void list(Model model) { List<Contact> contacts = contactDao.findAll(); model.addAttribute(\"contacts\", contacts); } } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    10. WEB-INF/jsp/contact/list.jsp <table> <c:forEach var=\"contact\" items=\"${contacts}\"> <tr> <td>${contact.name}</td> <td>${contact.email}</td> <td> <a href=\"edit.html?id=${contact.id}\">Edit</a> <a href=\"delete.html?id=${contact.id}\">Delete</a> </td> </tr> </c:forEach> </table> <c:if test=\"${empty contacts}\">No contacts in the DB</c:if> <a href=\"edit.html\">New</a> Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    11. More in the model @ModelAttribute(“countries”) public List<Country> getCountries() { // producing and returning the list } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    12. Getting parameters @RequestMapping public String delete(@RequestParam(\"id\") Long id) { Contact contact = contactDao.get(id); if (contact == null) { throw new RuntimeException(\"Contact not found\"); } contactDao.delete(contact); return \"redirect:list.html\"; } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    13. Preparing for a form @RequestMapping public void edit( @RequestParam(value = \"id\", required = false) Long id, Model model) { Contact contact = null; if (id != null) { contact = contactDao.get(id); if (contact == null) { throw new RuntimeException(\"Contact not found\"); } } else { contact = new Contact(); } model.addAttribute(\"contact\", contact); } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    14. WEB-INF/jsp/contact/edit.jsp <form:form commandName=\"contact\" method=\"POST\" action=\"${cp}/contact/save.html\"> <table> <tr> <td>Name:</td> <td><form:input path=\"name\"/></td> </tr> <tr> <td>E-mail:</td> <td><form:input path=\"email\"/></td> </tr> <tr> <td>&nbsp;</td> <td><input type=\"submit\" value=\"Submit\"/></td> </tr> </table> <form:errors path=\"*\" cssClass=\"errorBox\"/> </form:form> Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    15. Submit the form @Controller @RequestMapping({\"/contact/*.html\"}) @SessionAttributes({\"contact\"}) public class ContactController { // ... @RequestMapping public String save( @ModelAttribute(\"contact\") Contact contact, SessionStatus status) { contactDao.store(contact); status.setComplete(); return \"redirect:list.html\"; } } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    16. Validation @Resource private Validator validator; @RequestMapping public String save(@ModelAttribute(\"contact\") Contact contact, BindingResult result, SessionStatus status) { validator.validate(contact, result); if (result.hasErrors()) { return \"contact/edit\"; } contactDao.store(contact); status.setComplete(); return \"redirect:list.html\"; } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    17. Parancoe validation @RequestMapping @Validation(view=\"contact/edit\", continueOnErrors=false) public String save(@ModelAttribute(\"contact\") Contact contact, BindingResult result, SessionStatus status) { contactDao.store(contact); status.setComplete(); return \"redirect:list.html\"; } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    18. File upload <form:form commandName=\"contact\" method=\"POST\" action=\"${cp}/contact/save.html\" enctype=\"multipart/form-data\"> <table> <!-- ... --> <tr> <td>Picture:</td> <td><input type=\"file\" name=\"picture\" id=\"picture\"/></td> </tr> <!-- ... --> </form:form> Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    19. Changing the binding @InitBinder protected void initBinder(WebDataBinder binder) { binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor()); } Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    20. Binary output @RequestMapping public void picture(@RequestParam(\"id\") Long id, OutputStream os) throws IOException { Contact contact = contactDao.get(id); os.write(contact.getPicture()); os.flush(); os.close(); } <img src=”${cp}/contact/picture.html”> Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009
    21. Questions? ? Lucio Benfante - lucio.benfante@jugpadova.it – JUG Padova Javaday Roma III Edizione – 24 gennaio 2009

    + benfantebenfante, 9 months ago

    custom

    2672 views, 0 favs, 0 embeds more stats

    How to write controller using Java 5 annotations wi more

    More info about this document

    CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

    Go to text version

    • Total Views 2672
      • 2672 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 72
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events