22.04.19 스프링 게시판 조회수 올리기 / 회원가입, 로그인기능
전시간에 만들었던 특정 게시글 보기 기능 ---->> 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" 인터페이스의 위치를 나타냄 ! 주의해야됨
Author And Source
이 문제에 관하여(22.04.19 스프링 게시판 조회수 올리기 / 회원가입, 로그인기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ggg4155/22.04.19-스프링-게시판-조회수-올리기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)