이리 쉬운것을 그렇게 돌아왔나??

 Spring source에서  STS(Spring Tool Suit)를 다운받은뒤에
프로젝트 생성하나로 설정이 끝나버리는군...

먼저 Project를 생성하는데
new > project 에보면

springsource tool suit 밑에보면
Sprint Template Project가 있다.

그것을 선택한 후에
가장 아래에 있는
"Spring MVC Project"를 하면 끝.

project name이랑 package name은 알아서 정한다음
프로젝트 생성후에 웹서버로 실행시키면 바로 Hello world까지 찍혀버린다.  
728x90
http://www.springsource.com/landing/best-development-tool-enterprise-java

이리도 쉬운것을 멀리 돌아왔구먼....

위 사이트에 접속해서
오른쪽에 있는 "Download Now"를 누르는 것 보다

I agree and accept the license terms and export restrictions associated with this product.

요기에 체크하고(라이센스에 동의한다)

다운로드 링크를 클릭하면 바로 다운로드 페이지로 간다.
(I'd rather not fill in the form. Just take me to the download page)
(그냥 다운로드 하고 싶다)

자기 버전에 맞는 툴을 받는다.

728x90
http://download.eclipse.org/technology/m2e/releases

처음부터 이곳을 찾았어야 했다.
오랜만에 찾다보니... 오래된것들이 많아서
찾아보면 나오기는 하지만

http://m2eclipse.sonatype.org/update/ 해당 update는 더이상 유효하지 않다
Eclipse로 통합됐으니...

위의 링크로 Update 받으니 maven plug-in이 제대로 설치가 되는군 쩝.

728x90
바로 전에 만든 첫번째 DynamicWeb Project를 기반으로

폼 전송이 되는 예제를 만든다.

간단히 form을 하나 만들고 전송버튼을 눌렀을 때
폼의 내용을 전송하는 예제이다.

1. 해당 파일로 접속하도록 index.jsp 수정
WebContent/index.jsp
<jsp:forward page="contacts.html"></jsp:forward>

2. 연락처 추가 page
WebContent/WEB-INF/jsp/contact.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Spring 3 MVC Address book </title>
</head>
<body>
<h2>주소록</h2>

<form:form method="post" action="addContact.nobang">
    <table>
        <tr>
            <td><form:label path="firstname">Firstname </form:label>
            <td><form:input path="firstname"/></td>
        </tr>
        <tr>
            <td><form:label path="lastname">Lastname </form:label>
            <td><form:input path="lastname"/></td>
        </tr>
        <tr>
            <td><form:label path="email">Email</form:label>
            <td><form:input path="email"/></td>
        </tr>
        <tr>
            <td><form:label path="mobile">Mobile</form:label>
            <td><form:input path="mobile"/></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="Add Contact"/>
            </td>
        </tr>
    </table>

</form:form>

tag lib로 각 항목을 전송
나중에 해당 page는 addContact.nobang 으로 전송됨
(pattern으로 *.nobang을 인식함)


3. java source
form에서 넘어오는 data를 담을 객체 정의

package com.nobang.spring3.form;

public class Contact {
    private String firstname;
    private String lastname;
    private String email;
    private String mobile;
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    } 
}


Controller 정의
package com.nobang.spring3.controller;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.nobang.spring3.form.Contact;


@Controller
@SessionAttributes
public class ContactController {

    @RequestMapping(value="/addContact", method = RequestMethod.POST)
    public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result){
        System.out.println(contact.getFirstname() + contact.getLastname() );
        System.out.println(contact.getEmail() + " : " + contact.getMobile());
        return "redirect:contacts.nobang";
    }
   
    @RequestMapping("/contacts")
    public ModelAndView showContacts(){
        return new ModelAndView("contact", "command", new Contact());
    }
}


프로젝트를 실행한 뒤
form에 내용을 채우고
전송버튼을 누르면
Console에 로그가 찍힘.
728x90
첫번째 SpringFramewor 3.0 프로젝트.

Eclipse와 Java 환경설정은 끝났다고 가정하고

1.Eclipse를 열어 새 프로젝트에서 Dynamic Web Project를 선택하여
원하는 프로젝트명을 만든다.

나는 Spring3WithDynamicWeb이라고 지었다.

2. 첨부된 파일을 WebContent > WEB-INF > lib 폴더 안으로 복사한다
(build path에 넣는것이므로 별다른 설정 필요 없음)
commons-logging-1.0.4.jar
jstl-1.2.jar
org.springframework.asm-3.0.1.RELEASE-A.jar
org.springframework.beans-3.0.1.RELEASE-A.jar
org.springframework.context-3.0.1.RELEASE-A.jar
org.springframework.core-3.0.1.RELEASE-A.jar
org.springframework.expression-3.0.1.RELEASE-A.jar
org.springframework.web.servlet-3.0.1.RELEASE-A.jar
org.springframework.web-3.0.1.RELEASE-A.jar

3. Controller 만들기
원하는 Package에 Controller를 만든다.

com.nobang.spring3.controller/HelloWorldController.java

package com.nobang.spring3.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloWorldController {
    @RequestMapping("/hello")
    public ModelAndView helloWorld(){
        String message = "Hello World, Spring3";
        return new ModelAndView("hello", "message" , message);
    }
}

/hello라는 요청이 들어오면 처리한다는 내용으로
/hello/* 을 뜻한다. (ex. /hello/hello.html 등)

4. JSP 만들기
WEB-INF/jsp/hello.jsp

<html>
<head>
    <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title>
</head>
<body>
    ${message}
</body>
</html>

${message}는 controller의 helloWorld()를 통해 return 받을 ModelAndView에 "message"로 정의되어 있다.

WebCont/index.jsp
최초로 응답할 화면을 정의 한다.
<html>
    <head>
        <title>Spring 3.0 MVC</title>
    </head>
    <body>
        <a href="hello.nobang">Hello</a>
    </body>
</html>

5. web.xml 을 설정한다
WEB-INF/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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Spring3WithDynamicWeb</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <servlet>
      <servlet-name>spring</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>spring</servlet-name>
      <url-pattern>*.nobang</url-pattern>
  </servlet-mapping>
</web-app>

추후 <servlet이름>-servlet.xml 을 만들어야 한다.
servlet이름을 spring으로 지었으면 spring-servlet.xml 을 만든다.

브라우저를 통해 들어오는 요청이 url-pattern과 맞을 때, 해당 servlet이 동작한다.
위의경우 *.nobang으로 했으므로 /hello.nobang 으로 하면된다.
그래서  hello.jsp에서도 a href에 hello.nobang으로 되어 있다.
일반적으로는 .html을 한다.


6. <servlet-이름>-servlet.xml 을 만든다
WEB-INF/spring-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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
     <context:component-scan base-package="com.nobang.spring3.controller"/>
     <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
         <property name="prefix" value="/WEB-INF/jsp/"/>
         <property name="suffix" value=".jsp"/>
     </bean>
 
 </beans>

viewResolver설정에서
브라우저로 들어오는Url에 자동으로 값들을 추가하여 실제 파일과 매칭시킨다.
ex) /hello.nobang으로 들어오면
nobang이라는 pattern에 따라 spring servlet을 타게되고
/WEB-INF/jsp 아래에 있는 .jsp 파일중에서 hello.jsp를 찾는다.


728x90
새로운 Project를 실행시킨다.

Spring lib를 Build Path에 추가한다.

----------------------------------------------
 1. Service를 할 Class를 만든다.
HelloSpring3.java

public class HelloSpring3{
    public void sayHello(){
        System.out.println("Hi Spring!!");
    }
}

2. Spring 설정파일을 만든다.
Spring-Hello.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:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


<bean id="HelloSpringBean" class="HelloSpring"/>

</beans> 

: Spring의 특징은 실행되는 시점에 설정대로 동작을 한다는 뜻인데
XML에서 설정한 Bean ID 인 HelloSpringBean이라는 것을 호출하면 HelloSpring 이라는 Class가 응답을 한다는 뜻이다.
 *** 해당 XML 파일은 소스폴더에 있어야 한다.
 
3. 실행하기
 Hello.java
public class Hello{
    public static void main(String[] args){
        XmlBeanFactory beanFactory
      = new XmlBeanFactory(new ClassPathResource("Spring-Hello.xml"));
    HelloSpring myBean        
      = (HelloSpring)beanFactory.getBean("HelloSpringBean");

    myBean.sayHello();

    }
}

XML에서 Bean을 가져올 것이므로 XmlBeanFactory를 사용한다.
해당 XML은 Source 폴더 즉. Classpath에 있으므로 ClassPathResource를 사용한다.
=>ClassPath에 있는 Xml파일을 읽어서 Bean으로 사용한다.

BeanFactory에서 Id를 읽어 Class를 생성한다.
생성한 Class의 method를 실행한다. 
728x90
오랜만에 springsource.org에 갔더니 많은것이 바뀌어 있었다.

그냥 새로나왔다는 프레임워크 소스를 받고 싶었을 뿐인데
찾기가 쉽지 않았다.

그러던 와중에 쉽게 다운받는 링크를 찾았다.

http://static.springsource.org/downloads/nightly/release-download.php?project=SPR

스프링 사이트 내부에 있는것이라 언제 바뀔지 알 수 없으나
2011년 7월 현재 접속된다 ^^ 
728x90
driver download : http://go.microsoft.com/fwlink/?LinkId=54583


1. Socket Establishing Error 나네요 netstat -an 로 포트 확인결과 1433


"[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]들어오는 TDS(Tabular Data Stream)의 RPC(원격 프로시저 호출) 프로토콜 스트림이 잘못되었습니다. 매개 변수 1(""): 데이터 형식 0x38을(를) 알 수 없습니다." ERROR 대처방법(Java PreparedStatement 사용시)

MS-SQL 2005 server driver setting for iBatis
1. sqljdbc.jar 파일을 classpath에 추가
CLASSPATH=C:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.2\enu\sqljdbc.jar
(사실 해당 jar 파일을 현재 프로젝트의 lib안에도 넣어주고 테스트 했음 ^^)


2. Socket Establishing Error 나면 일단 접속이 제대로 안된 것이니 먼저
c:> netstat -an 로 포트 확인결과 1433 열려있는지 확인

3. "[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]들어오는 TDS(Tabular Data Stream)의 RPC(원격 프로시저 호출) 프로토콜 스트림이 잘못되었습니다. 매개 변수 1(""): 데이터 형식 0x38을(를) 알 수 없습니다." ERROR 대처방법(Java PreparedStatement 사용시)

sqlResource.properties (jdbc connection 관련 설정파일)
: {}안의 내용은 실제 환경에 맞는 것으로 넣어줌

driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://{ip_address}:1433;DatabaseName={db_name}
username={username}
password={password}

3. 가끔씩 Can't start a cloned connection while in manual transaction mode 이런 에러가 나면
jdbc:sqlserver://{IP}:PORT;SelectMethod=cursor;DatabaseName={DBName}
으로  "selectMethod=cursor 을 추가해 줘서 Test 해 볼 것.
728x90
보통 web.xml 에서
  <jsp-config>
      <taglib>
          <taglib-uri>/spring</taglib-uri>
          <taglib-location>/WEB-INF/tld/spring.tld</taglib-location>
      </taglib>
  </jsp-config>
로 선언 한 뒤에

jsp 파일에서
<%@ taglib prefix="spring" uri="/spring" %>
식으로 사용하게 되는데 가끔. 아주 가`~끔 안먹는 경우가 있다.

그럴 때,
<%@ taglib prefix="spring" uri="/spring" %> 대신

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 으로
직접 경로를 써줘도 무방하다.

728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1933)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (162)
난 그래 (159)
Study (290)
Cloud (26)
Go lang (30)
Front-end (27)
Device (3)
MAC (1)
Spring framework (49)
Java (13)
English (39)
SOA (0)
Idioms (7)
모르는거 (5)
WriteEnglish (10)
Android (56)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :