22.04.19 스프링 게시판 조회수 올리기 / 회원가입, 로그인기능

최고고·2022년 4월 19일
0

전시간에 만들었던 특정 게시글 보기 기능 ---->> POJO에서 게시글을 볼 때마다 조회수 카운트 되게하기

인터페이스

public void count(int idx);

xml (sql문 작성부분)

<update id="count" parameterType="int"> update board set count = count + 1 where idx = #{idx} </update>
count 컬럼에 +1 연산을 해주면 된다!

서버로부터 게시글을 받아와 보는 거기 때문에 브라우저의 뒤로가기 버튼과는 다르다!

  • POJO에서 바꿀 수 있는 부분
    @Autowired >>>> Inject 똑같은 의미
    스프링에서 메소드이름과 리턴의 이름이 같다면, 생략할 수 있음. void로 바꿔줌
  • 인터페이스에서 이렇게도 바뀔 수 있다.
    @Select("select * from board order by indate desc") public List<BoardVO> boardList(); // 위의 어노테이션을 수행한다는 의미 ,,
    자바안에 sql문이있기 땜에 좋은 방법은 아님
    xml은 컴파일이 안되기 때문에 추후에 수정이 쉽다 --->
    (클래스간 파일간 결합도를 낮춘 방법)


이게

이렇게 바뀜


스프링 로그인 기능 구현

  • 새로운 테이블에 따라 새로운 VO, mapper(interface), controller(pojo) 만들어주기

sql에 새로운 멤버 테이블을 추가해줘야됨!


임의의 값 insert로 넣어서 확인해보기~

view 폴더에 새로운 jsp 파일 생성하기 login.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="kr.smhrd.mapper.BoardVO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<title>게시판</title>
</head>
<body>
	<div class="container">
		<h2>Spring MVC Member</h2>
		<div class="panel panel-default">
			<div class="panel-heading">Login Insert</div>
			<div class="panel-body">
				<form class="form-horizontal" method="post" action="LoginSelect.do">
					<table style="width:400px; text-align: center; margin: auto;" class="table table-hover table-bordered">
						<tr>
						 	<td>아이디</td>
						 	<td><input class="form-control" type="text" name="id"> </td>
						</tr>
						<tr>
							<td>비밀번호</td>
							<td><input class="form-control" type="password" name="pw"> </td>
						</tr>
						<tr>
							<td colspan="2">
								<a href="join.do">아직 회원이 아니시면 여기를 클릭해주세요.</a>
								<br>
								<button type="reset" class="btn btn-success btn-sm">취소</button>
								<button type="submit" class="btn btn-info btn-sm">로그인</button>
							</td>
						
						</tr>	
					</table>
				</form>

			</div>
			<div class="panel-body">지능형 IoT </div>
		</div>
	</div>
</body>
</html>
  • 여기 눌렀을 때 이동하게되는 컨트롤러 !! 꼭만들기

MemberController

  • 어노테이션 꼭 써줘야됨

Join (회원가입 페이지)

<%@page import="java.util.ArrayList"%>
<%@page import="kr.smhrd.mapper.BoardVO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<title>게시판</title>
</head>
<body>
	<div class="container">
		<h2>Spring MVC Member</h2>
		<div class="panel panel-default">
			<div class="panel-heading">Join Insert</div>
			<div class="panel-body">
				<form class="form-horizontal" method="post" action="joinInsert.do">
					<table style="width:400px; text-align: center; margin: auto;" class="table table-hover table-bordered">
					<!-- join.jsp에서 회원정보 입력시 회원정보 joinInsert.do로 넘어감 
					joinInsert.do 요청받는 곳에서 받아들인 회원정보를 회원가입시키시오!
					회원가입 완료시 login.jsp로 이동
					MemberVO, MemberMapper.java, MemberMapper.xml -->
						<tr>
						 	<td>아이디</td>
						 	<td><input class="form-control" type="text" name="id"> </td>
						</tr>
						<tr>
							<td>비밀번호</td>
							<td><input class="form-control" type="password" name="pw"> </td>
						</tr>
						<tr>
							<td>닉네임</td>
							<td><input class="form-control" type="text" name="nick"> </td>
						</tr>
						<tr>
							<td>전화번호</td>
							<td><input class="form-control" type="text" name="phone"> </td>
						</tr>
						<tr>
							<td colspan="2">
								<button type="reset" class="btn btn-success btn-sm">취소</button>
								<button type="submit" class="btn btn-info btn-sm">회원가입</button>
							</td>
						
						</tr>	
					</table>
				</form>

			</div>
			<div class="panel-body">지능형 IoT </div>
		</div>
	</div>
</body>
</html>

MemberController


redirect 방식으로 가는 이유 : 포워드 방식은 조인의 url을 그대로 가지고 가기땜에

memberVO

package kr.smhrd.mapper;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString

public class MemberVO {
	private String id;
	private String pw;
	private String nick;
	private String phone;
}
  • 롬복api 활용하기

mapper(인터페이스)

package kr.smhrd.mapper;

import org.apache.ibatis.annotations.Mapper;

@Mapper

public interface MemberMapper {

	public void joinInsert(MemberVO vo);
	
	
}
  • 어노테이션 기입하기

MyBatis.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="kr.smhrd.mapper.MemberMapper">
    <insert id="joinInsert" parameterType="kr.smhrd.mapper.MemberVO">
        insert into member values(#{id},#{pw},#{nick},#{phone})
    </insert>
    
    
    
</mapper>
  • 파라미터타입 주의
  • namespace="kr.smhrd.mapper.MemberMapper" 인터페이스의 위치를 나타냄 ! 주의해야됨

0개의 댓글