2010년 11월 15일 월요일

@RequestMapping

@RequestMapping

 

 

- url을 클래스 또는 메소드와 맵핑시켜주는 역할을 한다.

 

- Annotation을 쓰지 않을때 지정했던 Controller 등록을 위한 url bean 설정을 생략할 수 있다.

 

- class에 하나의 url 맵핑을 할 경우, 클래스 위에 @RequestMapping("/url")을 지정하며,

 

    GET 또는 POST 방식 등의 옵션을 줄 수 있다.

 

- 해당되는 메소드가 실행된 후, return 페이지가 따로 정의되어 있지 않으면

 

   @RequestMapping("/url")에서 설정된 url로 다시 돌아간다.

 

- 메소드별로 url 맵핑을 할 경우는 메소드 위에 @RequestMapping("/url")로 지정한다.

 

- return 페이지가 지정되지 않은 경우 원래의 맵핑되었던 url로 돌아간다.

 

- return type을 String으로 하여 redirect:url또는 forward:url을 사용하여 다른 페이지로

 

  넘길 수 있다.

 

--------------------------------------------------------------------------------

 

@Controller
public class LoginController {

    @Autowired
    private LoginService loginService;

    @Autowired
    private SampleService sampleService;


    /**
     * 사용자로 부터 아이디, 패스워드를 입력받아 인증 성공이면 세션 객체에 계정정보를 담고 사원정보리스트 페이지로 포워딩한다. 인증에
     * 실패하면 로그인 페이지로 다시 리턴한다.
     */
    @RequestMapping("/loginProcess.do")
    public String login(HttpServletRequest request, @RequestParam("id") String id,
            @RequestParam("password") String password) {

        // TODO [Step 4-1-01]
        // LoginService의 authenticate메소드를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다.
     Account account = (Account) loginService.authenticate(id, password);

       
        /*
         * TODO [Step 4-1-03]
         * 가져온 account 객체가 null 아닌 경우
         * request.getSession() 메소드를 통해 Session을 구해 UserAccount 이름으로 Session 에
         * Attribute로 저장한다. 그리고 "redirect:/loginSuccess.do" 값을 반환한다. null 인경우
         * "login" 반환한다.
         */
     if (account != null) {
      request.getSession().setAttribute("UserAccount", account);
      return "redirect:/loginSuccess.do";
      } else {
      return "login";
      }
    }

    // TODO [Step 4-1-04]
    // loginSuccess.do 로 호출된 처리(@RequestMapping(value="/loginSuccess.do", method=RequestMethod.GET) 를 위한
    // 메소드(loginSuccess) 를 void 타입의 public 메소드를 만들어라.
    @RequestMapping(value = "/loginSuccess.do", method = RequestMethod.GET)
    public void loginSuccess() {
    }

    @RequestMapping("/exception.do")
    public String invokeException(@RequestParam("id") String id ) throws Exception {
       
        sampleService.invokeMethodAException();
       
        return null;
    }
   
}

 

2010년 11월 12일 금요일

eclipse.ini 파일 설정

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128M
-vm
C:\egovCohort_proj\bin\jdk1.5.0\bin\javaw.exe
-framework
plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-Dfile.encoding=UTF-8

jdk 1.6 -> jdk 1.5 버전 변경 에러

C:\Users\kimjinmi>java -version
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.5', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.

 

- 환경변수에서 path의 JAVA_HOME 설정 내용을 맨 앞으로 옮긴다.

 

- oracle과 java의 경로 설정에 문제가 생겨 이런 에러를 발생시킬 수 있다.

 

 

 

%JAVA_HOME%\bin;C:\TmaxSoft\JEUS5.0\bin;C:\TmaxSoft\JEUS5.0\lib\system;C:\app\kimjinmi\product\11.2.0\dbhome_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Dell\Dell Wireless WLAN Card;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Subversion\bin;C:\Program Files\TortoiseSVN\bin;%CATALINA_HOME%\bin;%CATALINA_HOME%\conf\web.xml;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\

2010년 11월 1일 월요일

jstl 설명 및 세팅

# 01

 

 

JSTL ( JSP Standart Tag Library )

 

JSP 에서 자바의 각종 기능을 태그형태로 사용할 수 있도록 정의해서 사용할 수 있는 것을 말합니다. 쉽게 말해서 굳이 자바나 JSP 언어를 쓰지 않고 태그형태로 HTML 상에서 불러다 쓸 수 있다는 말이죠. JSTL 은 커스텀태그의 일종입니다. 그렇다면 또 커스텀 태그가 무슨 뜻일까요?

 

커스텀 태그

 

자신이 직접 정의할 수 있는 태그를 말합니다. 평소에 쓰던 태그는 각각 기능이 있지만 그 기능은 한정되어 있고 원하는 기능이 있지만 일반적인 태그의 기능이 한정되었음을 느끼실 때가 많으셨을 겁니다. 그것을 대비하여 자신이 새로운 태그를 만들어 자신만의 태그를 만들 수 잇다는 거죠.

 

커스텀 태그의 장점

 

- 라이브러리 형태로 만들어서 필요할 때마다 쓰기 때문에 개발속도의 향상 업

- 일반 태그의 한게점 극복

- 자기가 직접 작성한 태그이기 때문에 유지보수 및 가독성 업

- 반복적 기능을 쉽게 구현이 가능하기 때문에 효율적

 

최대한 자바코드를 줄이기 위해 거의 모든 자바 코드를 커스텀 태그로 바꾸어 놓은 것을  : JSTL

 

EL ( Expression Language )

 

표현언어를 의미함. 자바코드를 대신하여 다른 표현식을 사용함.

 

<%=age%> -> ${age}

 

위와 같은 형태로 바꾸어 쓸 수 있다.

 

EL 을 쓸때는 ${변수명} 형태로 구성

 

 

# 02

 

다운로드 및 세팅

 

 

http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

 

 

위의 주소에서 zip 파일을 다운받는다.

 

 

압축을 풀고 lib 폴더에 들어 있는 jstl.jar 파일과 standard.jar 파일을 복사해서

 

tomcat의  lib 폴더 안에, 또는 생성한 프로젝트의 lib 폴더 안에 넣어두면 세팅 완료.

 

 

# 03

 

예제

 

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
  <title>JSP Page</title>
 </head>
 <body>
 <h1>EL Function(JSTL 1.1)</h1>
 <c:set var="name" value="Oracle dbms 오라클 클럽" />
 <c:set var="name" value="${fn:trim(name)}" /><br/>
 </body>
</html>

 

 

 

 

 

 

 

2010년 10월 19일 화요일

Tomcat 실행 에러 'starting tomcat Server at localhost' has encountered a problem

'Starting Tomcat v.6.0 Server at localhost' has encountered a problem.

 

Serveral ports (80, 8009) required by Tomcat v6.0

Server at locahost are already in use. Thee server may

already be running in another process, or a system

process may be using the port. To start this server you

will need to stop the other process or change the port

number(s).

 

위와 같은 에러가 난다면 작업 관리자 창을 열어

 

javaw.exe 를 종료 시키면 에러 없이 잘 실행된다.

 

javaw.exe 는 톰캣 샐행프로세스이다.

2010년 10월 12일 화요일

tomcat6.0 환경 설정 & java 환경설정 & 이클립스 연동

1. 자바 환경변수 설정

 

컴퓨터 -> 속성 -> 시스템 변수

 

# JAVA_HOME : C:\Program Files\Java\jdk1.6.0_07

 

                          (자신이 설치한 jdk 경로 지정)

 

 

# Path : %JAVA_HOME%\bin;

 

 

# CLASSPATH


.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\servlet-api;

 

%JAVA_HOME%\lib\jsp-api

 

 

* JDK 보다 Oracle 을 나중에 설치할 경우 Oracle 의 설정 중 Java 1.3.1 이 Path 의 앞을 차지하는 경우가 있다. 이럴 경우 다시 앞으로 놓아야 Java -version 시 1.6.0 으로 제대로 설정된다.

 

2. 톰캣 환경변수 설정

 

# CATALINA_HOME : C:\tomcat

 

 

# CLASSPATH : %CATALINA_HOME%\bin\servlet-api.jar;

 

 

[[ Tomcat 설치 및 환경설정 ]]

 

1. http://tomcat.apache.org/  ->  tomcat6.0 선택

 

 

2. tomcat6.0 다운로드

 

 

3. 실행하기

 

 

 

4. http://www.eclipsetotale.com/tomcatPlugin.html -> tomcat plug-in 다운받기

 

 

5. 다운받은 tomcatPluginV321.zip  압출을 푼 후 압축 푼 폴더 안의

 

com.sysdeo.eclipse.tomcat_3.2.1 이 폴더를 이클립스 plugins폴더 앞에 복사 해서

 

붙여넣는다.

 

 

6. 이클립스 click -> windows -> Preferences 에서 설정하기

 

 

 

 

 

 

 

 

 

7.  Tomcat 의 버전이 올라가면서 보안상의 이유로 서블릿을 실행하지 못하도록 설정되었다.

 

    서블릿을 실행하기 위해서는 다음과 같은 설정을 해주어야한다.

 

   컴퓨터 -> 오른쪽 마우스 ->  속성 -> 고급 시스템 설정 -> 시스템 설정 -> 고급 ->

   환경변수 -> path 선택 -> 편집

 

   %CATALINA_HOME%\conf\web.xml  
 

   위의 내용을 추가한다.

8. Tomcat6.0 -> conf -> web.xml 파일에서 invoker를 포함한 태그의 주석을 해제한다.


    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

9. 톰캣을 실행해도 아래와 같은 에러가 난다. 톰캣 6.x 버전부터는 서블릿 리로딩에 관련된

 

   설정을 해주어야 한다.

 

   java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.

   InvokerServlet is privileged and cannot be loaded by this web application

   Tomcat6.0 -> conf -> context.xml 파일을 아래와 같이 수정해야한다.

  <Context reloadable="true" privileged="true">

   

   태그안에 주황색으로 표시되어 있는 내용만 입력해 주면 된다.

 

 

10. Tomcat 실행 해보자. 잘 될것이다.

 

 

 

 

2010년 10월 7일 목요일

tomcat server.xml 설정

tomcat6.0 -> bin -> server.xml 의 파일에서 context  부분의 docbase를 설정해 주어야한다.

 

docbase는 url에서 localhost:8080 다음의 root 경로를 설정하는 부분이다.

 

<context docbase="C:\Program Files\root로 설정할 경로를 적어준다" path="/" />

 

만약 docbase를 C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps 

 

이렇게 설정했다면 webapps폴더 안이 root가 된다.

 

url에서 경로를 http://localhost:8080/ 다음에 webapps폴더 안에 있는 파일명을 적어주면 된다.

 

즉,  아래와 같은 의미이다.

 

 http://localhost:8080/ =  C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps

 

만약,  Host 태그에서 appBase="webapps" 설정되어 있다면 따로 설정하지 않아도 된다.

 

 

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

 


   이 경우 webapps가 root가 된다.  localhost:8000/ 여기가 webapps 폴더 안이 된다.