Clean Code that Works.

http://mvnrepository.com/artifact/javax.mail/mail

버전 클릭 해 보면 밑에 depend lib(activation)도 확인 할 수 있다.


http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mail.html

이메일 보낼려면 필요한 lib.

스프링 3.0에서 JSON view를 보여주고 싶다!!!!

왜!!
간단한 체크 요청에만 응답 해 줄려고.

참고한 URL : http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/
스프링 팀 블로그에는 좋은 글이 많은 듯 하다.

문서 삭제 하는데 문서가 잠겼는지 안잠겼는지 체크 한 후 삭제를 해야 했다.
잠겼으면 잠겼다고 리턴해 주어야 하는데
jsp뷰 리턴하면 기존 모델 객체의 값들이 필요 하므로..

form.jsp에서 삭제 하는데, return "form" 하게 되면 form.jsp를 다시 읽어서 하게 된다.
그러므로 form.jsp에서 필요로 하는 jstlView 속성들이 없기 때문에 오류가 난다.

간단하게 json으로 오류코드만 리턴해주고,
성공 했을 때는 이동할 페이지를 리턴해 주도록 하였다.

@RequestMapping( value="/bbs/delete.do", method=RequestMethod.GET)
    public @ResponseBody String delete( @RequestParam( "bbsID") String id, @RequestParam( "start") String start, HttpServletResponse response) throws Exception {
        if ( bbsService.isRocked( id)) {
            response.setStatus( HttpServletResponse.SC_BAD_REQUEST);
            return "false";
        } else {
            bbsService.deleteBbs( id);
            return "bbs/bbsList.do?start=" + start;
        }
    }

@ResponseBody만 붙여주면 일단 그냥 String으로 찍는다..

json형태로 응답을 받고 싶으면

스프링 aJax

위의 예제처럼..
jQuery에서 json형식으로 콜을 해주면 된다.





스프링 시큐리티 샘플 url.


두번째 URL에 있는 이미지를 보면 대충 감이 온다.

아 역시 security는 어려와 =_=;;


개인적으로 하면서 햇갈리고 애 먹엇던 내용을 정리 하는 곳.

1. SimpleFormController클래스에서 onSubmit메서드를 override 했는데 submiit을 POST로 날렸는데 onSubmit 메서드를 타지 않는다.
 -> onSubmit 파라미터 중에 BindException 이 java의 것이 아니라 스프링의 import org.springframework.validation.BindException을 사용 하도록 한다.

2. SimpleFormController에서 submit한구 결과 페이지가 표시 되지 않고,
Neither BindingResult nor plain target object for bean name 'commandName' available as request attribute
에러를 뿜어낼 때, formView와 successView의 이름을 다르게 설정 한다. 이 부부은 스펙을 좀 읽어봐야 하겠는데.. -_-;; 너무 귀찮고.. 영어는 어려와~!~!

3. java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
이런 오류가 나올 경우.
왜 나왔냐 하면 .jsp 파일에 직접 접근 할 때 스프링 form 태그를 사용할때 발생 하였다.
이것저것 찾아보고, 샘플 파일들에서 설정을 봐보니.

전에는 servlet에서 *-servlet.xml 파일을 로딩하도록 하고 있었으나,
이렇게 하면 안되고 web.xml에서 이런 형식으로 사용을 해야 된다고 한다.

<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>

4. 이클립스 디버깅 안될때.
JDK 버전이 6u14~15는 이클립스에서 디버깅이 잘 안된다.(웹 프로젝트의 경우)
이럴땐 그냥 6u16으로 변경 고고싱 -_-

트랙백에 가보면 설정으로 되어있는데..
그냥 자바 코드로 했을 경우.

프로 스프링 2.5 참조
SimpleMailSender.java
public abstract class SimpleMailSender
{
    protected abstract MailSender getMailSender();

    public void sendMessage( String to, String text)
    {
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setTo( to);
        msg.setSubject( "Test Message");
        msg.setFrom( "보내는 사람 주소");
        msg.setText( text);

        MailSender sender = getMailSender();
        try {
            sender.send( msg);
        } catch (MailException e)
        {
            e.printStackTrace();
        }
    }
}

JavaMailSimpleMailSender.java
public class JavaMailSimpleMailSender extends SimpleMailSender
{
    protected MailSender getMailSender()
    {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost( "smtp.gmail.com");
        sender.setPort( 465);
        sender.setProtocol( "smtps");
        sender.setUsername( "아이디");
        sender.setPassword( "비밀번호");
        sender.getJavaMailProperties().setProperty( "mail.smtps.auth", "true");
        sender.getJavaMailProperties().setProperty( "mail.smtps.startls.enable", "true");
        sender.getJavaMailProperties().setProperty( "mail.smtps.debug", "true");
        return sender;
    }
}

SimpleMailTest
public class SimpleMailTest
{
    private static final String TO = "받는사람 주소";
    private static final String JAVAMAIL_TEXT = "HELLO WORLD! Email generated user JavaMail";

    public static void main( String[] args)
    {
        SimpleMailSender sender = new JavaMailSimpleMailSender();
        sender.sendMessage( SimpleMailTest.TO, SimpleMailTest.JAVAMAIL_TEXT);
    }
}

응...?
메일은 처음 보내 보는듯 -ㅅ-;;;