2024. 1. 2. 14:44ㆍDaily Codig Reminder
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인화면</h1>
<form action="LoginServlet" method="post">
아이디:<input type="text" name="userid"><br>
비밀번호:<input type="text" name="passwd"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("UTF-8");
Enumeration<String> keys = request.getParameterNames();
PrintWriter out = response.getWriter();
out.print("<html><body>");
while(keys.hasMoreElements()) {
String key = keys.nextElement();
String value = request.getParameter(key);
out.print(key+":"+value+"<br>");
}
out.print("</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인화면</h1>
<form action="LoginServlet" method="post">
아이디:<input type="text" name="userid"><br>
비밀번호:<input type="text" name="passwd"><br>
사과:<input type="checkbox" name="fruit" value="apple"><br>
바나나:<input type="checkbox" name="fruit" value="banana"><br>
수박:<input type="checkbox" name="fruit" value="watermelon"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); //post방식은 이거막으면 안됨
Map<String,String[]>map= request.getParameterMap();
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<html><body>");
Set<String> keys=map.keySet();
for(String key : keys) {
String[] values = map.get(key);
String mesg="";
for(String s : values) {
mesg+= s;
}
out.printf(key+"==========="+mesg+"<br>");
}
out.print("</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
package com.config;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MySqlSessionFactory {
static SqlSessionFactory sqlSessionFactory= null;
static {//초기화
String resource = "com/config/Configuration.xml"; //수정이 필요한 유일한 부분
//Configuration.xml의 경로가 바뀔시에 수정이 필요
InputStream inputStream= null;
try {
inputStream = Resources.getResourceAsStream(resource);
System.out.println("configuration.xml 로딩 성공 ");
} catch (IOException e) {
// TODO Auto-generated catch block
//파일의 경로가 틀린경우 ioException발생
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//DriverManager와 비슷한 객체
}//end static
//SqlSession 반환
public static SqlSession getSqlSession() {//
// SqlSession session= MySqlSessionFactory.getSqlSession();
SqlSession session = sqlSessionFactory.openSession();
//getConnection의 Connection과 비슷한 기능의 SqlSession객체 생성 리턴
return session;
}
}
MySqlSessionFactory
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 1.jdbc.properties 경로지정
2. dto alias
3. 4가지 정보 설정
4. mapper 설정
5. MySqlSessionFactory 파일 경로 수정 -->
<properties resource="com/config/jdbc.properties"/>
<typeAliases>
<typeAlias type="com.dto.EmpDTO" alias="EmpDTO"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- db 연결 4가지 정보 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${xxx}"/>
</dataSource>
</environment>
</environments>
<!-- Mapper.xml의 경로 등록 (Mapper.xml파일이 존재해야함 )-->
<mappers>
<mapper resource="com/config/EmpMapper.xml"/>
</mappers>
</configuration>
configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="empMapper">
<!-- sql 삭제해서 맵퍼 작성할 것 -->
<select id="selectAll" resultType="EmpDTO">
select empno, ename, job, mgr, to_char(hiredate, 'yyyy-mm-dd') hiredate, sal, comm, deptno
from emp order by empno desc
</select>
<select id="memberAdd" parameterType="EmpDTO">
insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno)
values ( #{empno}, #{ename}, #{job}, #{mgr}, sysdate, #{sal}, null,null)
</select>
</mapper>
empmapper
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dto.EmpDTO;
import com.service.EmpService;
/**
* Servlet implementation class EmpAddServlet
*/
@WebServlet("/EmpAddServlet")
public class EmpAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public EmpAddServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
String ename=request.getParameter("ename");
String empno=request.getParameter("empno");
String job=request.getParameter("job");
String mgr=request.getParameter("mgr");
String sal=request.getParameter("sal");
EmpDTO dto = new EmpDTO();
dto.setEmpno(Integer.parseInt(empno));
dto.setEname(ename);
dto.setJob(job);
dto.setMgr(Integer.parseInt(mgr));
dto.setSal(Integer.parseInt(sal));
EmpService service = new EmpService();
int n = service.memberAdd(dto);
PrintWriter out = response.getWriter();
out.print("<html><body>");
if ( n==1) {
out.print("회웡가입성공");
}else {
out.print("회원가입실패");
}
out.print("<a href='EmpListServlet'>회원목록보기</a>");
out.print("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
EmpAddServlet
package com.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.dto.EmpDTO;
public class EmpDAO {
public List<EmpDTO> select(SqlSession session) {
List<EmpDTO> list = session.selectList("empMapper.selectAll");
return list;
}
public int memberAdd(SqlSession session, EmpDTO dto) {
int num = session.insert("empMapper.memberAdd",dto);
return num;
}
}
memberadd dao
package com.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.config.MySqlSessionFactory;
import com.dao.EmpDAO;
import com.dto.EmpDTO;
public class EmpService {
EmpDAO dao = new EmpDAO();
public List<EmpDTO> select() {
SqlSession session = MySqlSessionFactory.getSqlSession();
List<EmpDTO> list = null;
try {
list = dao.select(session);
}finally {
session.close();
}
return list;
}
public int memberAdd (EmpDTO dto) {
SqlSession session = MySqlSessionFactory.getSqlSession();
int num=0;
try {
num= dao.memberAdd(session, dto);
session.commit();
} finally {
session.close();
}return num;
}
}
service
3) initParm의 사용
package com.controller;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class InitParamServlet
*/
//@WebServlet("/InitParamServlet")
public class InitParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public InitParamServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("InitParameterServlet.doGet");
//초기 파라미터 얻기
String userid= getInitParameter("userid");
String email= getInitParameter("email");
System.out.println(userid+"\t"+email);
//null
Enumeration<String> enu = getInitParameterNames();
while (enu.hasMoreElements()) {
String key = enu.nextElement();
String value = getInitParameter(key);
System.out.println(">>>"+key+"\t"+value);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Servlet.doGet
package com.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class OtherServlet
*/
//@WebServlet("/OtherServlet")
public class OtherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public OtherServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("OtherServlet.doGet");
//초기 파라미터 얻기
String userid= getInitParameter("userid");
String email= getInitParameter("email");
System.out.println(userid+"\t"+email);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>03_Servlet2_init_param</display-name>
<servlet>
<servlet-name>InitParamServlet</servlet-name>
<servlet-class>com.controller.InitParamServlet</servlet-class>
<init-param>
<param-name>userid</param-name>
<param-value>aaa</param-value>
</init-param>
<init-param>
<param-name>email</param-name>
<param-value>aaa@naver.com</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>OtherServlet</servlet-name>
<servlet-class>com.controller.OtherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InitParamServlet</servlet-name>
<url-pattern>/xxx</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OtherServlet</servlet-name>
<url-pattern>/yyy</url-pattern>
</servlet-mapping>
</web-app>
@webservlet을 없애고 /yyy /xxx 로 사용.
3) ContextParam
package com.controller;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class InitParamServlet
*/
@WebServlet("/ContextParamServlet")
public class ContextParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ContextParamServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("ContextParameterServlet.doGet");
ServletContext ctx= getServletContext();
String userid= ctx.getInitParameter("userid");
String email= ctx.getInitParameter("email");
System.out.println(userid+"\t"+email);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Other 에서 실행됨.
OtherServlet.doGet
스코프 중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
가. request 스코프
- HttpServletRequest API
- 요청 ~ 응답까지의 Life Cycle을 가짐
- setAttribute(key, value) 와 getAttribute(key) 메서드 이용
나. session 스코프
- HttpSession API
- 브라우저의 Life Cycle을 가짐
- setAttribute(key, value) 와 getAttribute(key) 메서드 이용
다. application 스코프
- ServletContext API
- 웹 어플리케이션에서의 context의 Life Cycle을 가짐
- setAttribute(key, value) 와 getAttribute(key) 메서드 이용
- 프로젝트가 끝나기 전까지는 계속~~~~~~~~
package com.controller;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class SetScopeServlet
*/
@WebServlet("/SetScopeServlet")
public class SetScopeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SetScopeServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("request", "홍길동");
System.out.println("set request :홍길동");
//2 session scope 에 저장, 브라우저에 생명주기와 동일
HttpSession session = request.getSession();
session.setAttribute("session","이순신");
System.out.println("set session: 이순신 ");
//3. application scope
ServletContext ctx = getServletContext();
ctx.setAttribute("application", "유관순");
System.out.println("set application :유관순");
}//doget함수가 끝나는 순간 연결이 다 끊어짐 따라서 scope에서 불러올수없음
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
package com.controller;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class GetSc
* opeServlet
*/
@WebServlet("/GetScopeServlet")
public class GetScopeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. request scope에서 데이터 get
String x= (String)request.getAttribute("request");
System.out.println("GetScopeServlet request===="+x);
//2. session scope에 get
HttpSession session = request.getSession();
String x2 =(String)session.getAttribute("session");
System.out.println("GetScopeServlet session ===="+x2);
//3. application scope 얻기
ServletContext ctx = getServletContext();
String x3 =(String)ctx.getAttribute("application");
System.out.println("GetScopeServlet application====="+x3);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
set request :홍길동
set session: 이순신
set application :유관순
GetScopeServlet request====null
GetScopeServlet session ====이순신 //브라우저 죽이고 띄우면 null나옴
GetScopeServlet application=====유관순
GetScopeServlet application=====유관순
GetScopeServlet request====null
GetScopeServlet session ====null
GetScopeServlet application=====유관순 //서버 죽이지 않는 이상 나옴
GetScopeServlet request====null
GetScopeServlet session ====null
GetScopeServlet application=====null// 서버 죽였을 때
폼데이터 ⇒ servlet request.getParameter(”key”) : Stirng
실수⇒ (String)request.getAttribute(”password”): 안됨
request.setAttribute(”AAA”,”홍길동”)
⇒(String)request.getAttribute(”AAA”):Object⇒형변환필요
가장많은 실수 request.getParameter(”AAA”) ⇒ 전혀 상관없는 녀석
요약:
폼데이터⇒> request.getParameter, request.getParametweValues 만
request.setAttribute=⇒ request.getAttribute만 사용할것
'Daily Codig Reminder' 카테고리의 다른 글
jsp2 (0) | 2024.01.04 |
---|---|
5장- jsp (0) | 2024.01.04 |
servlet (0) | 2023.12.31 |
event (1) | 2023.12.31 |
DOM, EVENT (0) | 2023.12.24 |