2020년 12월 5일 토요일

오래된 JSP와 에러내용 정리

org.apache.ibatis.binding.BindingException: Type interface is not known to the MapperRegistry.

<mapper namespace="com.bangtae.impl.LoginDAOImpl"> <--- mapper, namespace 확인 후, 아래와 같이


DB관련 xml에 해당 *Mapper.xml파일을 추가해줘야 함.

 

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" /> 
  <property name="mapperLocations" value="classpath:com/bangtae/common/query/*Mapper.xml" />
 </bean>


20120822_MyBatis 정리

ㆍMyBatis, Error
 - org.apache.ibatis.binding.BindingException: Type  is not known to the MapperRegistry.
 ※ 참고사이트 - http://yjrock.blog.me/10137060041

 - java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for kr.co.inspien.rtims.impl.InterfaceGroupDaoImpl.getInterfaceGroupList
 ※ 참고사이트 - http://jhoonslife.tistory.com/358

 

ㆍMyBatis, .xml 구성 - http://blog.naver.com/yagu0?Redirect=Log&logNo=90123880289
   http://devday.tistory.com/2208

 

ㆍMyBatis 한글 가이드 문서 - http://www.scribd.com/doc/68885206/33/id-result

 

*Mapper.xml(MyBatis에서 Query가 들어가는 파일)사용 방법
 - Advanced Result Mapping
 ※ 참고사이트 - http://loianegroner.com/2011/03/ibatis-mybatis-handling-joins-advanced-result-mapping-association-collections-n1-select-problem/

 - Dynamic SQL
 ※ 참고사이트 - http://java.dzone.com/articles/ibatis-mybatis-working-dynamic?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+javalobby%2Ffrontpage+(Javalobby+%2F+Java+Zone
 
 - This element can be used to define a reusable fragment of SQL code that can be included in other statements.
  <sql id=”userColumns”> id,username,password </sql>
  ------------------------------------------------------------------------------------------------
  <select id=”selectUsers” parameterType=”int” resultType=”hashmap”>
   select <include refid=”userColumns”/>
   from some_table
   where id = #{id}
  </select>

 - insert, update, delete 속성 설정
  <insert id="insertAuthor"
   parameterType="domain.blog.Author"
   flushCache="true"
   statementType="PREPARED"
   keyProperty=""
   keyColumn=""
   useGeneratedKeys=""
   timeout="20000">
  </insert>

  <update id="insertAuthor"
   parameterType="domain.blog.Author"
   flushCache="true"
   statementType="PREPARED"
   timeout="20000">
  </update>

  <delete id="insertAuthor"
   parameterType="domain.blog.Author"
   flushCache="true"
   statementType="PREPARED">
  </delete>
  ------------------------------------------------------------------------------------------------
  <insert id="insertAuthor" parameterType="domain.blog.Author">
   insert into Author (id,username,password,email,bio)
   values (#{id},#{username},#{password},#{email},#{bio})
  </insert>

  <update id="updateAuthor" parameterType="domain.blog.Author">
   update Author set
   username = #{username},
   password = #{password},
   email = #{email},
   bio = #{bio}
   where id = #{id}
  </update>

  <delete id="deleteAuthor” parameterType="int">
   delete from Author where id = #{id}
  </delete>

 - resultMap from Result
  <select id=”selectUsers” parameterType=”int” resultType=”hashmap”>
   select id, username, hashedPassword
   from some_table
   where id = #{id}
  </select>
  ------------------------------------------------------------------------------------------------
  <resultMap id="userResultMap" type="User">
   <id property="id" column="user_id" />
   <result property="username" column="username"/>
   <result property="password" column="password"/>
  </resultMap>

  <select id=”selectUsers” parameterType=”int” resultMap=”userResultMap”>
   select user_id, user_name, hashed_password
   from some_table
   where id = #{id}
  </select>

 - Bean(get, set) from Result
  <select id=”selectUsers” parameterType=”int”
   resultType=”com.someapp.model.User”>
   select id, username, hashedPassword
   from some_table
   where id = #{id}
  </select>
  ------------------------------------------------------------------------------------------------
  <!-- In Config XML file -->
  <typeAlias type=”com.someapp.model.User” alias=”User”/>
  <!-- In SQL Mapping XML file -->
  <select id=”selectUsers” parameterType=”int”
   resultType=”User”>
   select id, username, hashedPassword
   from some_table
   where id = #{id}
  </select>

 - Alias 기술방법
  <select id=”selectUsers” parameterType=”int” resultType=”User”>
   select
    user_id as “id”,
    user_name as “userName”,
    hashed_password as “hashedPassword”
    from some_table
    where id = #{id}
  </select>


Spring3.0환경에서 MyBatis3.0 연동하기

Google의 MyBatis는 개발자가 지정한 SQL 및 Procedure, 고급 Mapping을 지원하는 Persistence, Framework이며,
기존의 Apache 밑에 있던 iBatis팀이 Google Code로 옮기면서 MyBatis로 바뀌었다고 함. 


 - Spring3.0환경에서 MyBatis3.0 연동하기
  ㆍ필요 .jar 파일 : mybatis-3.1.1.jar, 
                            mybatis-spring-1.1.1.jar,
                            org.springframework.aop-3.1.2.RELEASE.jar 


 ※ 참고사이트 - http://www.theeye.pe.kr/entry/simple-way-to-integration-spring-3-with-mybatis-3 


  ㆍiBatis, MyBatis의 차이점 - http://dlangus4345.blog.me/110129759763 


Spring3.0 설정하기

ㆍSpring, ModelAndView 처리방법
    - Redirect 방식
 예) ModelAndView.setViewName("redirect:/hello.html");

    - ModelAndView 대체할 수 있는 Annontation
 예) @RequestMapping("/hello")

 

ㆍSpring, DI(Dependency Injection) = 의존성 주입
 DI = Singletone Pattern(객체를 메모리에 한번만 올려 사용하는 디자인패턴)

    - Singletone Pattern
       1. Static에 올려진 객체는 중복해서 생성되지 않음.
       2. Global(어디서든)하게 Instance에 접근 가능함.

 

ㆍSpring, JDBC

다른 .xml의 bean 사용하기 : http://cafe.naver.com/deve/807

ㆍSpring, Properties
Properties 파일 사용하기 : http://mudchobo.tistory.com/249
                                     http://www.xenomity.com/84

ㆍSpring, Alert
Properties 메시지, JavaScript에서 출력하기 : http://dhrod0325.blog.me/140160205944

 

ㆍSpring, .jar
    - Log처리를 위한 파일
      commons-logging-1.1.1.jar
      log4j-1.2.17.jar
 
    - JSTL(JSP Standard Tag Library) = 표현언어(Expression Language)를 사용하기 위한 파일
      jstl-1.2.jar
      standard.jar

 

   - SpringMVC Pattern를 사용하기위한 파일
      org.springframework.asm-3.1.2.RELEASE.jar
      org.springframework.beans-3.1.2.RELEASE.jar
      org.springframework.context-3.1.2.RELEASE.jar
      org.springframework.core-3.1.2.RELEASE.jar
      org.springframework.expression-3.1.2.RELEASE.jar
      org.springframework.web.servlet-3.1.2.RELEASE.jar
      org.springframework.web-3.1.2.RELEASE.jar

 

- JDBC(Java Database Connectivity)를 사용하기위한 파일
      org.springframework.jdbc-3.1.2.RELEASE.jar
      org.springframework.transaction-3.1.2.RELEASE.jar

 

- DB(Oracle)를 접근하기 위한 파일
      ojdbc14.jar 
      commons-dbcp-1.4.jar
      commons-pool-1.5.6.jar



SpringMVC 패턴 및 환경 조사 ㆍAnyFrame_Sample(SpringMVC) - http://dev.anyframejava.org/anyframe/doc/web/3.0.1/webfw/springmvc/basic/sample.html

    - 삼성 SDS에서 만든 Spring기반의 프레임워크, 현재 삼성SDS 프로젝트에서 사용되고 있는 프레임워크임.

ㆍSpring 공식사이트 - http://www.springsource.org/download

ㆍSpring MVC를 사용한 초간단 예제 - http://www.javajigi.net/display/OSS/Spring+MVC#SpringMVC-SpringMVC%EB%A5%BC%EC%82%AC%EC%9A%A9%ED%95%9C%EC%B4%88%EA%B0%84%EB%8B%A8%EC%98%88%EC%A0%9C
    - Spring MVC(Model, View, Control)패턴의 장점
    MVC의 잠점은 Application에서 Business Logic과 UI(User Interface) Code를 깔끔하게 분리해 준다는 점이며, 오픈 후 유지보수가 편하다. 
    ※ 참고 사이트 - http://linuxism.tistory.com/456

 

    - Log4J 간단 사용법 - http://linuxism.tistory.com/509
    Log4J를 사용하게 되면 무분별하게 System.out.println 구문을 사용하여 소스가 지저분해지는 것과 성능이 저하되는걸 사전에 방지해 줄 수 있다.
 
    - Spring MVC의 Ajax(Asynchronous JavaScript and XML)
    Ajax 요청 - Jquery의 Ajax 

    ※ 참고 사이트
    http://dev-world.springnote.com/pages/6358467
    http://www.javajigi.net/display/WEB20/4.+Ajax+Application+Examples
    http://blog.anthonychaves.net/2010/02/01/spring-3-0-web-mvc-and-json/

 

ㆍSource 버젼관리 툴
    - SVN(Subversion) - http://lazyartist.springnote.com/pages/835268
    - CVS(cvsnt) - http://www.ysoh.pe.kr/entry/CVS%EC%97%90-Project-%EB%93%B1%EB%A1%9D

 

ㆍBuild 툴
    - Ant
    자바기반의 빌드 자동화 툴이며, 분산된 일(컴파일)을 단 한번에 처리 가능하다.
    ※ 참고사이트
    http://www.hanb.co.kr/exam/1712/appendix.pdf
    http://guni-textcube.blogspot.kr/2009/05/ant-%EB%B9%8C%EB%93%9C-%EC%82%AC%EC%9A%A9%EA%B8%B0-1-ant-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%EC%84%A4%EC%B9%98.html
 
    - Hudson(Continuous integration with Hudson) -
    CI툴로서 빌드 및 테스트 전반을 수행할 수 있다.
   ※ 참고사이트 - https://studio.plugins.atlassian.com/secure/attachment/13330/Continuous_Integration_with_Hudson_doortts.pdf


[myBatis, iBatis]java.io.IoExceptionicould not find resource
XML파일를 읽어오지 못하여 WEB-INF폴더가 아닌 Package
안에 넣으니깐 잘 실행되었다.

[스트럿츠]Url를 못찾는 에러
Class가 컴파일이 되었나 확인한다.

[스트럿츠]org.apache.struts.chain.commands.lnvalid PathException
Struts-conpig.xml의 Path와 요청하는 경로가 같은지 확인한다.

[스트럿츠]Tiles에서 액션태그인 <jsp:include>가 적용이 안되는 이유
템플릿페이지를 구현할때
를 사용하게 되면 컴파일 에러가 발생되며 Tiles로만 사용을 하여 메인레이아웃을 상속을 받아
처리하면 된다

org.apache.tomcat.dbcp.SQLNostedExceptioni cannot create poolable connection Factory(Io 예외사항...
원인 : Context의
server.xml에
javax.naming.NameNotFound Exception : Name jdbc is not bound in this context
발생하였다.
어떻게 해결은 하였지만 최종적인 원인은
JinDi Name(Web.xml, Context.xml, DB, JAVA)이 잘못된것 같다.

Ajax를 사용한 XML 읽어오기
  /* 로그인 화면 */
function login_apply(mode) {
var fm = document.form1;
fm.view.value = mode;
xmlCall("./ajax/s91h20000199v.jsp", formData2QueryString(fm), set_after);

function set_after(xmlhttp){
 
var x_result = new DOMUtil(xmlhttp.responseXML.documentElement);
var data = x_result.getText("data1");
var innerHTML = "";
innerHTML = innerHTML + data;
  
document.all.layer_loginfrontView.innerHTML = innerHTML;
layer_login_open();
}
}

Ajax의 XML구현
stringB.append("<x>:goPrizeView2('"+news_site_seq+"', '"+mode1+"');\">\n");</x>
stringB.append("\n");
stringB.append("
\n");
stringB.append("
\n");
stringB.append("");
out.write("<result>\n");</result>
out.write("<data1></data1>\n");
out.write("\n");
%>

[jQuery]$.ajax({
//================Ajax(비동기식) 페이지 호출 시작
$.ajax({ 
   type: "GET",
   url: url , 
   data: param,
   success: function(rtn){ 
       if(flugSub == 4){ //flugSub가 4인 경우 리스트를 보여주고 
      //그외에는 상세화면을 출력한다.
            $("#listLay").html(rtn); 
       }//if
            $("#viewLay").html(rtn); 
       },
   error : function(err) {
            alert("Ajax에러 발생 : " + err.status + " \n " +err.statusText );
       }
}); //ajax
//================Ajax(비동기식) 페이지 호출 끝

[myBatis, iBatis]com.ibatis.common.beans.ProbeException: There is no WRITEABLE property named 'membercode' in class 'server.member.MemberBean'

com.ibatis.common.beans.ProbeException: There is no WRITEABLE property named 'membercode' in class 'server.member.MemberBean'

원인 : MemberBean의 전역변수와 Member.xml의 properties가 대소문자를 구별하기 때문


[myBatis, iBatis]java.io.IOException: Could not find resource /WEB-INF/SqlMapConfig.xml 에러
iBasti를 사용하여 DB에 접근 하는 중
java.io.IOException: Could not find resource /WEB-INF/SqlMapConfig.xml 이런 에러가 발생하였다.
SqlMapConfig.xml파일을 Member Package에 두고, 경로명을 member/SqlMapConfig.xml로 변경
하여 DB접근 성공!
4줄로 끝나서 금방 에러를 찾은것 같지만... 반나절이 걸렸다 ㅠㅜ

[스트럿츠]java.lang.IllegalArgumentException: Path .layout-menu1 does not start with a "/" character

Tiles를 사용하여 페이지를 구현하는데

이런에러가 ㅡㅡ?

java.lang.IllegalArgumentException: Path .layout-menu1 does not start with a "/" character

네이버와 구글을 이용해서

원인을 찾아내었다~~~

원인은

ProcessPreprocess를 구현을 안해줘서 그런거 같다^^/


[스트럿츠]org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.

원인 : struts-config.xml의 path의 경로가 틀릴경우 500번 에러 

해결 : struts-config.xml의 path와 요청을하는 주소가 같은지 확인을 해야함


getParameter 한글 인코딩
String a=request.getParameter("한글인코딩"); //값을 받아온다
String b=new String(a.getBytes("8859_1"), "UTF-8");


GET방식 인코딩
URLEncoder.encode(request.getParameter("name"),"utf-8")
URLDecoder.decode(request.getParameter("name"),"utf-8")

댓글 없음:

댓글 쓰기