mysql -u root -p할 때 오류남

 

 

service mysql restart

Redirecting to /bin/systemctl restart mysql.service

systemctl start mariadb
mysql -u root -p

하니깐 된다!!

'study > JAVA 전문가' 카테고리의 다른 글

[linux] 톰캣 설치  (0) 2022.01.26
[HTML/CSS]  (0) 2022.01.11
[JSP] filter  (0) 2022.01.06
[JSP] 방명록 프로그램  (0) 2022.01.05
[JSP] EL  (0) 2022.01.05
  1. ifconfig로 ip 확인
IPADDR=192.168.0.69
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=168.126.63.1
DNS2=168.126.63.2

DNS는 nslookup www.----.com  을 통해서 알아냈다. 

2. tomcat 압축 풀기

tar xvfz apache-tomcat-8.5.75.tar.gz

3. 톰캣 위치 옮기기

mv apache-tomcat-8.5.75

/usr/local/poscoict/tomcat8.5에 확인

4. 톰캣 실행

[root@localhost poscoict]# tomcat8.5/bin/catalina.sh start

 

5. 작업 관리자 확인

ps -ef | grep tomcat

 

6. 네트워크 열려져 있는 것 확인

netstat -anp | grep 8080

 

7. 톰캣 중단

/usr/local/poscoict/tomcat8.5/bin/catalina.sh stop

 

8. 서비스 등록

 vi /usr/lib/systemd/system/tomcat.service

 

9. 톰캣 시작하고 종료하고 reboot해서 톰캣 확인 

- systemctl start tomcat
- ps -ef | grep tomcat
- systemctl stop tomcat
- sync
- sync
- sync
- sync
- sync

- reboot
- http://192.168.0.69:8080/

 

10. 

 vi /usr/local/poscoict/tomcat8.5/conf/tomcat-users.xml

해서 맨 밑 </tomcat-users>바로 위에

<role rolename="manager"/>
  <role rolename="manager-gui" />
  <role rolename="manager-script" />
  <role rolename="manager-jmx" />
  <role rolename="manager-status" />
  <role rolename="admin"/>
  <user username="admin" password="manager" roles="admin,manager,manager-gui, manager-script, manager-jmx, manager-status"/>

붙여넣기

 

여기서 비밀번호 잘 기억

톰캣 manager app클릭하면 비밀번호 치는 거 나옴

 

11. tomcat manager 설정

vi /usr/local/douzone2021/tomcat/webapps/manager/META-INF/context.xml

원래 기존의 context 주석 처리해줌

<Context antiResourceLocking="false" privileged="true" docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" />
</Context>

추가해준다. 

 

12. 다시 시작해줘서 확인

systemctl stop tomcat
systemctl start tomcat

http://192.168.0.69:8080/manager/html 들어가서 manager app 들어가서 비번치면 manager들어가짐

eclipse

  • perspective(조망) 개발(JAVA SE, JAVA EE) view 배치
  • 설정
    • encoding
      java Properties File빼고 다 UTF-8로
    • spelling disable
    • export
      • /.settings
      • /.classpath
      • .projects 가 있는 얘들 -> 커모
      • src 
      • pom.xml
    • 커버낫 프로젝트
      • maven -> /.settings, /.classpath, .projects가 나옴
      • 빌드툴 
        • src
        • pom.xml
        • (멀티 프로젝트 만들 수 있음)
          •  servlet-practice (부모) 
            • |--- helloweb (라이브러리 만드는 )
            • |--- guestbook (라이브러리 사용하는 app)
            • |--- mysite 
      • gradle

프로젝트 구조

  • 이클립스
    • project
      • |--- src 
        1. * .java
        2.  package
          1. 프로젝트의 구조를 나누는 역할
            • 기능 분리
          2. 클래스 충돌 방지
            • 구조를 잘 나눠야 한다. 
            • 개발하는 사람 기준 
            • 큰 데서 작은 곳으로
            • com.javax.hello ,,, ㄷ으등
      • |--- bin
        • 클래스 있음
          • cmd창에서 실행해보기
            1. 클래스가 어디에 있는지를 먼저 찾아야함 - class path필요
            2. java -cp . 위치

 

maven

  • 빌드 위치는 target
    • src, pom.xml 만 올려도 됨
  • |--- src
    • main
      • java
        • hello
          • HelloWorld.java
      • resources : 소스말고 다른 것 (설정파일) - 패키지 (컴파일 대상이 아님)
        • config
          • db.properties
  • |--- test ( 테스트 클래스 만드는 것 - 실패하면 빌드 안 함)
    • java
      • hello
        • HelloWorld.java

  • target
    • hello
      • HelloWorld.class
    • cinfig
      • db.properties

pom.xml - 빌드 옵션 설정하는 파일

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.poscoict</groupId>
	<artifactId>helloworld</artifactId>
	<version>0.0.1-SNAPSHOT</version>


	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
	</properties>

	<dependencies>
	</dependencies>

	<build>
		<sourceDirectory>src/main/java</sourceDirectory>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.0</version>
				<configuration>
					<source>11</source>
					<target>11</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
  • pom추가해주고 
  • maven update해준다. 
  • 서버환경에 올려야해서 build해야 함 - J2SE-1.5가 바뀜
  • javaSE로 바꿔주기위해 configuration 바꿔줌

waven 실행

꼴 설정하고 run해주면 됨
따로 설정 안 해주려면 이렇게 적어놓으면 된다. 
실행 후 console
실행 후 생김

 

filter

필수는 아닌데 알고 있으며 편할 때가 있다. 

  • 서버 기동 될 때, 객체 생성함 
  • 서블릿 수행 되기 전, 수행되고 나서 역활 할 수 있는 것
  • 요청 왔을 때, 필터를 거쳐서 수행됨 (jsp, servlet, static file)
  • 로그 필터 - ex) 회사가 앞으로 한달 동안만 사이트의 어느 시간 때에 요청이 많이 오는 지 확인할 때.
  • 필터 갯수 제한 없음
  • 몇 번째 필터냐에서 순서가 달라짐
    • 순서는 필터의 이름 순서에 따라 달라진다.  - 알파벳 순
  • 한번 객체 생성되면 서버 죽을 때까지 유지됨
    • 서버 기동될 때 객체 생성 해 놓는다. 
  • chain.doFilter : 다음 친구를 수행 시켜라. - 수행해야함. 
    • servlet수행 하기 전에 전처리 할 내용 앞에 적음
    • 후 처리할 내용은 chain.doFilter호출 뒤에 적는다. 
    • 이거 안 하면 filter만 호출되고 응답해버림 (servlet안 해줌)
  • first(servlet) 요청(request 선택)할 때만 filter하겠다. 
  • httpservlet은 클래스라서 자유로웠는데 filter는 인터페이스
  • 다른 서블릿 요청할 때 수행 안 됨
    package filter;
    
    import java.io.IOException;
    import javax.servlet.DispatcherType;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    
    /**
     * filter 공부
     * 2022.01.06
     * init메소드가 맨 밑 - 알파벳 순
     */
    @WebFilter(dispatcherTypes = {DispatcherType.REQUEST }
    					, urlPatterns = { "/first" })
    public class FlowFilter implements Filter {
    	
        public FlowFilter() {
        	System.out.println("FlowFilter 객체 생성");
        }
    	public void destroy() {
    		
    	}
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    		System.out.println("---- 서블릿 수행 전 생성");
    		chain.doFilter(request, response);
    		System.out.println("---- 서블릿 수행 후 생성");
    	}
    	// 필터가 객체 생성할 때 - 서버가 기동할 때(서버 죽을 때까지 유지)
    	public void init(FilterConfig fConfig) throws ServletException {
    		System.out.println("FlpwFilter 객체 초기화");
    	}
    
    }​

  • 모든 자원 시작할 때 filter시작

'study > JAVA 전문가' 카테고리의 다른 글

[linux] 톰캣 설치  (0) 2022.01.26
[HTML/CSS]  (0) 2022.01.11
[JSP] 방명록 프로그램  (0) 2022.01.05
[JSP] EL  (0) 2022.01.05
[ServletJSP] 시험 준비  (0) 2022.01.04

[visitor테이블을 활용한 방명록 웹 프로그램 작성]

  1. view
    • visitorView.jsp
    • visitorUpdateView.jsp
  2. controller
    • controller.VisitorDBservlet2.java
      • get 방식
        • 방명록 삭제 (d메소드) 
        • 전체 리스트 출력 (r메소드)
        • 원하는 글 한개 추출 (rOne메소드) - 방명록 수정에 입력 폼을 출력하기 위해서
      • post방식 - 방명록 글이 와야하기 때문
        • 방명록 작성 - insert (c메소드)
        • 방명록 수정 - update (u메소드)
  3. model
    • vo.VisitorVO
    • dao.visitorDAO
      • c - 작성자 이름, 작성 내용을 prepareStatement사용해서
      • u
      • d
    • dao.MySQL.java

 

  • DB연동 - DAO가
  • 작성하고 바로 보여주는게 좋음
  • 모델 먼저 만드는게 일반적

'study > JAVA 전문가' 카테고리의 다른 글

[HTML/CSS]  (0) 2022.01.11
[JSP] filter  (0) 2022.01.06
[JSP] EL  (0) 2022.01.05
[ServletJSP] 시험 준비  (0) 2022.01.04
[JSP] java bean, 스코프, MVC모델  (0) 2022.01.04
  • servlet이 보관한 내용을 보여줌
  • 꺼내서 보여주려면, 수행문태그를 이용해서 getAttribute -> 강제형변환해야함
  • 필요한 객체안에 메소드 호출 -> 표현식 태그로 표현할 때
  • EL 쓰면 훨씬 간단하게 할 수 있다. 

EL (Expression Language)

  • 표현식 태그를 더욱 간단하게 해결할 수 있게 하겠다. 
  • $와 { }로 표현
  • EL에서는 setter를 호출하지 않는다. 
  • 내장객체 - hash map 객체를 참조함
    • pageContext (jsp내장객체면서 EL의 내장 객체)
    • 만약에 EL에서 고유 jsp내장객체를 사용하고 싶을 때
    • 사용하고싶은 jsp 내장객체를 꺼내오면 된다. 
  • pageScope - jsp안에서 어떤 이유든 이 페이진 안에서만 사용하겠다. (pageContext안에 보관
  • requestScope - request안에 보관되어 있는 객체 꺼내고 싶을 때
  • requestScope.꺼내고싶은객체
  • sessionScope
    • sesssionScope.객체이름
  • applicationScope - 서블릿 컨테스트 안에 
  • 어떤 문자로 표현되는 문자를 추출하겠다. - param
    • param : EL 식에서만 사용할 수 있는 내장객체
    • <% out.println(request.getParameter("q")); &>
    • <%= request.getParameter("q") %>
    • ${param.q}
    • ${param{"q"}}
  • 하나의 이름에 여러개 value 올 수 있는 얘는 paramValues사용하면 된다.
  • header.뭐뭐뭐 : 헤더 정보 
  • headerValues
  • cookie.쿠키이름 - 클라이언트에서 전송되는 쿠키 전송
  •  sessionScope.cart.apple
    • sessionScope안에 있는 cart 객체를 꺼내라
    • 꺼낸 객체가 가지고있는 getApple( )을 호출해서 리턴한 결과를 표현해라
    • cart를 꺼내고싶은 얘의 이름(key)로 사용
    • apple을 property명으로 사용함
  • 변수의 참조 대상이 일반 java 객체getXxx()를 호출한 결과 
  • 변수의 참조 대상이 Map 객체이면 get("xxx")을 호출한 결과가 됨

  • 문자열 결합 연산자 (+=)
\${100 += 200 += 300 } : ${100 += 200 += 300 }<br>

  • EL식은 추출하고 없으면 비어둠
${param.message}
${param["message"]}
<%= request.getParameter("message") %>
  • 표현식 태그는 null이라고 나옴
  • 이름을 문자열 형식으로 줘야함 ["message"]

  • empty param.message 가능
 ${ !empty param.message }

  • EL에서의 변수 
    1. EL의 내장객체의 변수
    2. 어딘가에 보관되어있는 객체의 이름
      <!-- jsp수행이 끝나면 사라짐 -->
      	<% pageContext.setAttribute("name", "자바");  %>
      	name 변수의 값 : ${name}<br>
      	pageScope.name 변수의 값 : ${pageScope.name}<br>​
      - pageScope에서 먼저 찾고 -> sessionScope에 가서 찾음- 어떤 스코프 영역인지 생략해도 된다. 
  • pageConext에 보관되어 있는 건 pageScope에 저장되어 있는 것

${ list[0].time }<br>${ list[1].time }<br>${ list[2].time }
  • 배열 인덱스 대괄호를 사용해서 접근한다.

 

  • ${header.XXX} : header정보 중 xxx로 전달 된 
  • ${param.XXX} : 요청 파라미터로 전달된 xxx로 전달 된 
  • ${XXX} : xxx로 보관된 객체 꺼냄
  • ${requestScope.XXX} : requestScope 보관되어 있는 객체중에 xxx로 보관된 객체를 꺼내겠다.

 

'study > JAVA 전문가' 카테고리의 다른 글

[JSP] filter  (0) 2022.01.06
[JSP] 방명록 프로그램  (0) 2022.01.05
[ServletJSP] 시험 준비  (0) 2022.01.04
[JSP] java bean, 스코프, MVC모델  (0) 2022.01.04
[jsp] 액션태그  (0) 2022.01.03

jsp용 bean class

  1. 패키지화 되어져야 한다. 
  2. 가급적이면 defalut생성자를 가지고 있어야 한다. (아규먼트 가지지 않는 생성자
  3. bin을 통해서 기능을 처리하는데 있어서, jsp를 통해서 클라이언트에 표현하는 목적을 가짐
    • bin이 어떤 기능이든 간에, 수행결과를 추출하는 메서드는 get---라고 시작해야한다. 
    • 설정하는 기능 : setter로 만들어줘야 한다. 
  • 자바 잘 모르는 사람도 잘 하기 위해서
    • 태그로 객체 생성 가능하게
    • elu로 생성 가능

package jspbean;
import java.time.LocalDateTime;

public class Today {
	private int year;
	private int month;
	private int date;
	private int hour;
	private int minute;
	public Today() {
		LocalDateTime currentTime = LocalDateTime.now();
		year = currentTime .getYear();
		month = currentTime .getMonthValue();
		date = currentTime .getDayOfMonth();
		hour = currentTime .getHour();
		minute = currentTime.getMinute();
	}
	public int getHour() {
		return hour;
	}
	public int getMinute() {
		return minute;
	}
	public int getYear() {
		return year;
	}
	public int getMonth() {
		return month;
	}
	public int getDate() {
		return date;
	}	
}

1.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="jspbean.Today"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>폰트 끌어오기</title>
<link href="https://fonts.googleapis.com/css?family=Dokdo:400"
	rel="stylesheet">
</head>
<body>
	<h1 style="font-family: 'Dokdo'">
		지금은 <%Today obj = new Today();%>
		<%=obj.getYear()%>년
		<%=obj.getMonth()%>월
		<%=obj.getDate()%>일
		<%=obj.getHour()%>시
		<%=obj.getMinute()%>분 입니당
	</h1>
</body>
</html>
  • 자유롭게 가져올 수 있음
  • 패키지화만 되어있으면 가능
  • 객체 생성하는 코드, 메서드 호출하는 코드 구현할 줄 알아야

 

2.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="https://fonts.googleapis.com/css?family=Gamja+Flower:400"
	rel="stylesheet">
</head>
<body>
	<h1 style="font-family: 'Gamja Flower'">
		지금은
		<jsp:useBean id="obj" class="jspbean.Today" />	
		<jsp:getProperty name="obj" property="year" />년
		<jsp:getProperty name="obj" property="month" />월
		<jsp:getProperty name="obj" property="date" />일
		<jsp:getProperty name="obj" property="hour" />시
		<jsp:getProperty name="obj" property="minute" />분 입니당
	</h1>
</body>
</html>
  • 액션태그 사용함 = useBean, getProperty
  • useBean : jsp에서 사용 가능한 자바 클래스
    • 태그를 가지고 사용가능한 자바 클래스 
      • 어떤 자바 클래스를 사용하고 싶은가? class속성에 패키지 명 
      • 모든 멤버가 static이 아니면 객체 생성해서 사용해야함
    • 여러번 사용할 수 있지만, id는 유니크 해야함
      • id값은 변수가 된다. 
    • scope : 언제까지 유효한 객체인지 (기본값 : page)
      • 생략하면 : 객체를 무조건 생성한다고 생각하면 됨
    • 무조건 객체 생성하지 않음
      • 이미 객체가 생성되어있으면, 객체 가져옴
      • 생성 안 되어있으면, 생성함
  • set/get Property
    •  getProperty
      • 사용가능한 상태로 만든 자바 객체에 대해서 getter메소드 생성해서 이 자리에 출력하겠다. 
      • 자바 bean 클래스가 가지고 있는 것 중에서 getter만 호출함
        • getter를 호출하고 그 자리에 리턴 결과를 출력해준다. 
    • setProperty
      • 사용가능한 상태로 만든 자바 객체에 대해서 setter를 호출
    • 어떤 클래스에 대해서 set, get주냐 ?
      • name속성에 대해 정해짐 : id값을 줌
    • property : get/set을 뺀 나머지 (첫 글자만 소문자로 바꿔서 지정)

 

3.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="jspbean.Today"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>3번째 방법</title>
<link href="https://fonts.googleapis.com/css?family=Poor+Story:400"
	rel="stylesheet">
</head>
<body>
	<h1 style="font-family: 'Poor Story';">
		지금은 <%pageContext.setAttribute("obj", new Today());%>
		${obj.year}년 
		${obj.month}월 
		${obj.date}일 
		${obj.hour}시 
		${obj.minute}분
		입니당
	</h1>
</body>
</html>
  • 표현식 태그를 간단하게 해주는 것 : EL
  • setter호출 불가
  • obj라고 보관된 객체를 찾음
    • <%pageContext.setAttribute("obj", new Today());%>
    • el만의 구문을 가짐
    • 일반 변수가 아니고, 어떤 객체를 어딘가 보관한 이름이라고 생각하면 됨
    • setAttribute
    • 어떤 객체 안에 보관하느냐 

스코프

  • 객체 공유
    • 객체의 스코프 : 객체가 생성되어 유지되는 기간
    • 여러가지 목적에 의해서, 여러 jsp들이 객체에 보관해 놓으면 다른 얘가 가지고 갈 수 있는
    • 어떤 jsp/servlet를 요청하든 여러 jsp가 공유하도록

  • page 스코프
    • 요청된 서블릿,jsp가 수행한 동안에 유효한 객체
    • 공유 X
    • servlet
      • 객체 생성해서 지역변수에 담으면 됨 - servlet
    • jsp
      • page context에 보관하면 됨
      • use bean속성 사용해서 scope 속성 생략해도 됨
  • request 스코프
    • 요청이 끝날 때까지 공유함
    • forward, include했을 때 의미가 있음
    • 요청이 끝나면 사라짐
    • 객체를 보관한 뒤 jsp에 넘기고 jsp는 꺼내게 만듦
    • 객체 생성을 해서 httpservletRequest에 보관하면 된다. 
      • 요청이 끝나면 사라짐
  • session 스코프
    • 브라우저가 살아있는 동안 공유함
    • session객체가 살아있는 동안 (일정시간 동안)
    • 클라이언트마다 각각 할당 
    • 다음 요청시에도 클라이언트별로 객체를 생성해서 사용하고 싶을 때 - httpsession
  • application 스코프
    • 서버가 죽을 때 까지 유효한 객체
      • 로그 처리
      • 사이트가 운영하는 내내 필요한 객체
    • 하나만 생성해서 모든 클라이언트와 공유
      • ex) 한 달 동안 몇 명이 방문했다.. 
    • servletContext (컨테이너 객체)

 


  • 컨테이너 객체
    • 종류 
      • HttpServletRequest
      • HttpSession
      • ServletContext
        • getservletcontext
          • WAS가 객체 생성해줌
          • reload 되면 다시 생성함
    • 기능
      • setAttribut
      • getAttribut
      • removeAttribute

 

MVC

  • model-view-contorller
  • 요청 받는 얘와 응답하는 얘 나눠서 개발
  • 병렬적으로 개발
  • 개발 생산성 높음
  • 유지보수 편함

 

  •  controller
    • 서버에 요청을 해왔을 때, 요청을 받아서 요청받은 목적에 맞게 기능 수행
    • servlet
  • model 
    • db연동, 값 처리-> view한테 넘김
    • c와 v사이 부가적인 기능 제공 java클래스
    • java Bean
      • jsp에서도 사용 가능하게
    • 도메인모델, 서비스 모델
      • 도메인 모델 - DTO(data transfor object), VO
        • 값 보관해서 누구에게 전달
      • 서비스 모델
        • DAO - DB 연동 로직
        • 비즈니스 로직 - BIZ
  • view
    • 응답 (클라이언트한테 어떻게 보여줄까)
    • ex) 봄, 여름, 가을, 겨울 마다 웹페이지가 바뀌는 것 (배치, 이미지, 등)
    • jsp

 

 

'study > JAVA 전문가' 카테고리의 다른 글

[JSP] EL  (0) 2022.01.05
[ServletJSP] 시험 준비  (0) 2022.01.04
[jsp] 액션태그  (0) 2022.01.03
[fileIUpload,jsp] 서블릿 구현  (0) 2021.12.30
[servlet]요청 재지정  (0) 2021.12.29

+ Recent posts