240 likes | 347 Views
Spring MVC - uzupełnienie. Plan wykładu. TilesView Automatyczne uruchamianie metod Wysyłanie e-mail Java Message Service. TilesView - konfiguracja (I). <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="order" value="0"/>
E N D
Plan wykładu • TilesView • Automatyczne uruchamianie metod • Wysyłanie e-mail • Java Message Service Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
TilesView - konfiguracja (I) <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="order" value="0"/> <property name="viewClass" value="commons.TilesView" /> </bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/proces-tiles.xml</value> </list> </property> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
TilesView - konfiguracja (II) <definition name="default-layout" template="/WEB-INF/jsp/common/default-layout.jsp"> <put-attribute name="header" type="template" value="/WEB-INF/jsp/common/header.jsp"/> <put-attribute name="footer" type="template" value="/WEB-INF/jsp/common/footer.jsp"/> <put-attribute name="menu" type="template" value="/WEB-INF/jsp/common/menu.jsp"/> <put-attribute name="logon" type="template" value="/WEB-INF/jsp/common/logon.jsp"/> <put-attribute name="content” type="template"value=""/> </definition> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
TilesView (I) public class TilesView extends AbstractUrlBasedView { protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { TilesContainer container = TilesAccess.getContainer(getServletContext()); String url = getUrl(); if ( container.isValidDefinition( url, request, response ) ) { container.render( url, request, response ); } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
TilesView (II) else { AttributeContext ctx = container.getAttributeContext( request, response ); Attribute content = new Attribute(); content.setName( "content" ); content.setType( Attribute.AttributeType.TEMPLATE ); content.setValue( "/WEB-INF/jsp/" + url + ".jsp" ); ctx.putAttribute( "content", content ); container.render( "default-layout", request, response ); } }} Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
TilesView - strona jsp <html> <head> wszystkie css, scripty, inne </head> <body> <tiles:insertAttribute name="header"/> <tiles:insertAttribute name="menu"/> <tiles:insertAttribute name="logon"/> <div class="content"><tiles:insertAttribute name="content"/></div> <tiles:insertAttribute name="footer"/> </body> </html> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Automatyczne wykonywanie metod (I) <bean name=”nocnePorzadki" class="org.springframework.scheduling.quartz. MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref=”uzytkownikService" /> <property name="targetMethod" value=”metodaPorzadkujaca" /> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Automatyczne wykonywanie metod (II) <bean id=”pierwszyTrigger" class="org.springframework.scheduling.quartz. CronTriggerBean"> <property name="jobDetail" ref=" nocnePorzadki " /> <!-- run every morning at 2 AM --> <property name="cronExpression" value="0 0 2 * * ?" /> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Automatyczne wykonywanie metod (III) <bean id=”drugiTrigger" class="org.springframework.scheduling. quartz.SimpleTriggerBean"> <property name="jobDetail" ref=" nocnePorzadki" /> <property name="startDelay" value="10000" /> <property name="repeatInterval" value="50000" /> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Automatyczne wykonywanie metod (IV) <bean class="org.springframework.scheduling.quartz. SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="pierwszyTrigger" /> <ref bean="drugiTrigger" /> </list> </property> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email (I) public class MailServiceImpl implements MailService, ApplicationContextAware { private JavaMailSender mailSender; private ApplicationContext applicationContext; private VelocityEngine velocityEngine; //metody servisowe np.: UzytkownikService ..... Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email (II) public void noweKonto(final String login) { //przygotowanie obiektu preparator try { mailSender.send(preparator); } catch(MailException me) { ... } } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email (III) MimeMessagePreparator preparator = new MimeMessagePreparator() { @Override public void prepare(MimeMessage mimeMessage) { Uzytkownikuzytkownik = uzytkownikService.getByLogin(login); MimeMessageHelper message = new MimeMessageHelper(mimeMessage, "UTF-8"); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email (IV) message.setTo(uzytkownik.getEmail()); message.setFrom(”adresOdKogo”); message.setText(”tekst maila”, false); message.setSubject(”tytuł maila”); } String from = applicationContext.getMessage("email.from", null, new Locale("pl"))); message.setFrom(from); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email (V) Map<String, Object> model = new HashMap<String, Object>(); model.put("uzytkownik", uzytkownik); model.put("link",”http://www.biblioteka.pl/aktywacja.html?id=”); String text = VelocityEngineUtils.mergeTemplateIntoString( velocityEngine, ”szablony/noweKonto.html”, "UTF-8", model); message.setText(text, false); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email - konfiguracja (I) <bean id="velocityEngine" class="org.springframework.ui.velocity. VelocityEngineFactoryBean"> <property name="velocityProperties"> <value> resource.loader=class class.resource.loader.class=org.apache.velocity. runtime.resource.loader.ClasspathResourceLoader </value> </property> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wysyłanie email - konfiguracja (II) <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value=”???" /> <property name="port" value=”???" /> <property name="username" value=”???" /> <property name="password" value=”???" /> <property name="protocol" value="smtp" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Szablon email Witaj ${uzytkownik.imie} ${uzytkownik.nazwisko}, Twoje konto zostało założone. Automatycznie wygenerowano hasło: ${uzytkownik.pierwszeHaslo} Kliknij poniższy link: ${link}${uzytkownik.hash} Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Java Message Service - sender (I) @Transactional @Service("messageSender") public class BibliotekaMessageSenderImpl implements BibliotekaMessageSender { @Autowired @Qualifier("jmsTemplate") private JmsTemplate jmsTemplate; Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Java Message Service - sender (II) @Override public void sendNoweKontoMessage(String login) { NoweKontoMessage nkm = new NoweKontoMessage(); nkm.setLogin(login); jmsTemplate.convertAndSend(nkm); } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Java Message Service - listener (I) @Service(”bibliotekaMessageListener") @Transactional public class BibliotekaMessageListener implements MessageListener { ... Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Java Message Service - listener (II) @Override public void onMessage(Message message) { if (message instanceof ObjectMessage) { ObjectMessage ob = (ObjectMessage) message; .... Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Java Message Service - listener (III) if (ob.getObject() instanceof NoweKontoMessage) { NoweKontoMessage nkm = (NoweKontoMessage) ob.getObject(); bibliotekaMailService.noweKonto(nkm.getLogin()); } else if .... } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego