SpringBoot ( 사원관리프로그램 )

jyp·2023년 3월 28일
0

학원

목록 보기
53/57

Sitemesh 사용하기 위해 @Bean 메소드를 추가

@Bean
public FilterRegistrationBean<SitemeshConfig> sitemeshbean()
{
	FilterRegistrationBean<SitemeshConfig> bean = new FilterRegistrationBean<SitemeshConfig>();
	bean.setFilter(new SitemeshConfig());
	
	return bean;
}

SitemeshConfig 설정 class파일을 생성

public class SitemeshConfig extends ConfigurableSiteMeshFilter {

  @Override
  protected void applyCustomConfiguration(SiteMeshFilterBuilder builder)
  {
      // 설정관련내용 >> default.jsp , exclude

                          //  적용시킬파일,     해당 파일의 경로
      builder.addDecoratorPath("/*", "/views/common/default.jsp"); // DecoratorPath는 jsp 관련
      builder.addDecoratorPath("/login/*", "/views/common/default2.jsp");
      builder.addExcludedPath("/login/my*");
  }
}

login_ok 요청시 count를 사용해도 되지만 database에 두번 접근 해야 하기 때문에
아래처럼 처리하면 한번만 접근하고 처리할수있음

controller.java 부분
@Override
public String login_ok(MemberVo mvo,HttpSession session) {
	
	MemberVo mvo2 = mapper.login_ok(mvo);
	
	if(mvo2 != null)
	{
		session.setAttribute("mvo", mvo2);
		return "/main/main";
	}
	else
	{
		return "redirect:/member/login";
	}
	
}

.xml 부분
<select id="login_ok" resultType="com.example.demo.vo.MemberVo">
	select sawon,name,level from member
	where userid=#{userid} and pwd=#{pwd}
</select>

사원등록 member_input.jsp
select 쿼리문을 활용해서 depart table에 들어있는 부서의 code와 name을 가져와서
반복문을 통해 출력해주기

<section>
	<div id="mformm">
		<form method="post" action="member_input_ok">
			<div class="member"> <input type="text" name="userid" placeholder="아이디"> </div>
			<div class="member"> <input type="text" name="name" placeholder="이 름"> </div>
			<div class="member"> <input type="password" name="pwd" placeholder="비밀번호"> </div>
			<div class="member"> <input type="text" name="sawon" placeholder="사원번호"> </div>
			<div class="member">
				<select name="depart">
					<option> 부서선택 </option>
					<c:forEach items="${list}" var="dvo">
					<option value="${dvo.code}"> ${dvo.name} </option>
					</c:forEach>
				</select>
			</div>
			<div class="member">
				<select name="level">
					<option> 선택 </option>
					<option value="80"> 상급관리자 </option>
					<option value="60"> 중급관리자 </option>
					<option value="40"> 하급관리자 </option>
					<option value="20"> 평직원 </option>
				</select>
			</div>
			<div class="member"> <input type="submit" value="사원등록"> </div>
		</form>
	</div>
</section>

member_input 구현클래스

@Override
public String member_input(Model model) {
	
	// 부서정보를 전달
	ArrayList<DepartVo> list = mapper.getDepart();
	model.addAttribute("list",list);
	
	// 사원번호를 mapper를 통해 생성하여 전달
	int num = mapper.getSawon();
	String code = "c"+String.format("%03d", num); << 앞에 c를 붙여주고 자릿수 맞추는 코드
	model.addAttribute("code",code);
	
	return "/member/member_input";
}

출퇴근 구현클래스 처리

@Override
public String mypage(HttpSession session,Model model) {		
	// 회원정보
	String sawon = session.getAttribute("sawon").toString();
	MemberVo mvo = mapper.mypage(sawon);
	
	model.addAttribute("mvo",mvo);
	model.addAttribute("depart",mapper.getDepartName(mvo.getDepart()));
	
	// 출퇴근 출력
	LocalDate today = LocalDate.now();
	CommuteVo cvo = mapper.getCommute(sawon,today.toString());
	
	int chk;
	if(cvo==null)
	{
		// 출근 안함.
		chk=1;
	}
	else if(cvo.getTowork()!=null && cvo.getTohome()==null)
	{ // 출근이 저장됐다.
		chk=2;
	}
	else
	{ // 출,퇴근이 전부 DB에 저장됐다.
		chk=3;
	}
	
	model.addAttribute("chk",chk);
	
	// 사원간 쪽지
	
	return "/member/mypage";
}

@Override
public String towork(HttpSession session) {
	String sawon = session.getAttribute("sawon").toString();
	String today = LocalDate.now().toString();
	
	mapper.towork(sawon,today);
	
	return "redirect:/member/mypage";
}

@Override
public String tohome(HttpSession session) {
	String sawon = session.getAttribute("sawon").toString();
	String today = LocalDate.now().toString();
	
	mapper.tohome(sawon,today);
	
	return "redirect:/member/mypage";
}

출퇴근 관련 xml 쿼리문

commute table안에 값을 확인하여 jsp 파일에 출력하는걸 바꿔 주는 용도
<select id="getCommute" resultType="com.example.demo.vo.CommuteVo">
	select *from commute where sawon=#{param1} and writeday=#{param2}
</select>

출근
<insert id="towork">
	insert into commute (towork,writeday,sawon)
	values(curtime(),#{param2},#{param1})
</insert>

퇴근 << 이미 DB에 들어있는 값중 비어있는 tohome에 값을 넣어줘야되는거기 때문에 업데이트다
<update id="tohome">
	update commute set tohome=curtime()
	where writeday=#{param2} and sawon=#{param1}
</update>
profile
국비 코딩

0개의 댓글