SMBMS 슈퍼마켓 주문 관리 시스템 의 사이트 소스 코드
전체 프로 세 스 와 코드 작성 방향:
제안 은
디 버 깅 과 debug 에 편리 하고 먼저 작성Dao
하 는 것 입 니 다.주로 데이터 베이스 와 의 상호작용,sql 문 구 를 작성 하 는 것 을 책임 집 니 다.그 다음 에 작성Servicce
은 주로 Dao 층 을 호출 하고 다시 작성Servlet
하 는 것 을 책임 집 니 다.이것 은 주로 Service 와 전단 의 데이터 상호작용 을 호출 합 니 다.예 를 들 어 resquet 와 response 등 입 니 다.기본 구조
프로젝트 구축 준비 작업
1- 4
5 프로젝트 패키지 구조 만 들 기
6-7
8 정적 자원 발생
웹 앱 디 렉 터 리 에 놓 습 니 다.사이트 자원 이기 때 문 입 니 다.
로그 인 기능 구현
1.전단 페이지 login.jsp 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title> - </title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/css/style.css" rel="external nofollow" />
<script type="text/javascript">
/* if(top.location!=self.location){
top.location=self.location;
} */
</script>
</head>
<body class="login_bg">
<section class="loginBox">
<header class="loginHeader">
<h1> </h1>
</header>
<section class="loginCont">
<form class="loginForm" action="${pageContext.request.contextPath }/login.do" name="actionForm" id="actionForm" method="post" >
<div class="info">${error }</div>
<div class="inputbox">
<label for="userCode"> :</label>
<input type="text" class="input-text" id="userCode" name="userCode" placeholder=" " required/>
</div>
<div class="inputbox">
<label for="userPassword"> :</label>
<input type="password" id="userPassword" name="userPassword" placeholder=" " required/>
</div>
<div class="subBtn">
<input type="submit" value=" "/>
<input type="reset" value=" "/>
</div>
</form>
</section>
</section>
</body>
</html>
2.첫 페이지 설정
<!-- -->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
3.Dao 계층 사용자 로그 인 인터페이스 작성Dao 층(데이터 지구 층)은 데이터 베 이 스 를 조작 하고 업무(예 를 들 어 사용자 로그 인,계 정 비밀번호 보다)는 업무 층 이 책임 집 니 다.
public User getLoginUser(Connection connection, String userCode)throws Exception;
4.Dao 인터페이스 구현 클래스 작성
public User getLoginUser(Connection connection, String userCode) throws Exception {
// TODO Auto-generated method stub
PreparedStatement pstm = null;
ResultSet rs = null;
User user = null;
if(null != connection){
String sql = "select * from smbms_user where userCode=?";
Object[] params = {userCode};
rs = BaseDao.execute(connection, pstm, rs, sql, params);
if(rs.next()){
user = new User();
user.setId(rs.getInt("id"));
user.setUserCode(rs.getString("userCode"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setGender(rs.getInt("gender"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setUserRole(rs.getInt("userRole"));
user.setCreatedBy(rs.getInt("createdBy"));
user.setCreationDate(rs.getTimestamp("creationDate"));
user.setModifyBy(rs.getInt("modifyBy"));
user.setModifyDate(rs.getTimestamp("modifyDate"));
}
//connection null , 。
BaseDao.closeResource(null, pstm, rs);
}
return user;
}
5.비 즈 니스 계층 인터페이스업무 층 은 업무 에 필요 한 데 이 터 를 얻 기 위해 Dao 층 을 호출 합 니 다.
public interface UserService {
//
public User login(String userCode, String userPassword);
}
6.업무 층 실현 클래스
public class UserServiceImpl implements UserService{
private UserDao userDao;
public UserServiceImpl(){
userDao = new UserDaoImpl();
}
public User login(String userCode, String userPassword) {
// TODO Auto-generated method stub
Connection connection = null;
User user = null;
try {
connection = BaseDao.getConnection();
user = userDao.getLoginUser(connection, userCode);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
BaseDao.closeResource(connection, null, null);
}
//
if(null != user){
if(!user.getUserPassword().equals(userPassword))
user = null;
}
return user;
}
}
7.servlet 작성
public class LoginServlet extends HttpServlet {
//servlet: , , 。
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// ( )
String userCode = req.getParameter("userCode");
String userPassword = req.getParameter("userPassword");
// , : ,
UserServiceImpl userService = new UserServiceImpl();
User user = userService.login(userCode, userPassword);//
if(user != null){// ,
// Session
req.getSession().setAttribute(Constant.USER_SESSION , user);
// ( , , )
resp.sendRedirect("jsp/frame.jsp");
}else{// ,
// , , 。(( , ( ), , ))
req.setAttribute("error" , " ");//
req.getRequestDispatcher("login.jsp").forward(req , resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
8.servlet 등록
<!--servlet-->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.tong.servlet.user.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
전체 흐름전단 이 시작 되면 login.jsp(첫 페이지 로 설정)를 실행 하고 웹.xml 에 설 치 된 login.do(servlet 맵)로 직접 이동 하여 해당 하 는
servlet(Login Servlet)을 호출 하고 servlet 에서 업무(User ServiceImpl)를 호출 한 다음 에 업무 가 사용 하고 자 하 는 Dao(UserDaoImpl)를 호출 하여 데 이 터 를 가 져 옵 니 다.로그 인 기능 최적화
로그아웃 기능:
사고방식:session 를 제거 하고 로그 인 인터페이스 로 돌아 가기;
LogoutServlet
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getSession().removeAttribute(Constant.USER_SESSION);
resp.sendRedirect(req.getContextPath() + "/login.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
책.
<!-- -->
<servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>com.tong.servlet.user.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/jsp/logout.do</url-pattern>
</servlet-mapping>
로그 인 차단 최적화왜 로그 인 차단 최적화
session 에 user 라 는 속성 이 있 는 지 없 는 지 ,
의 경우 session 에 user 라 는 속성 이 없 기 때문에 없 으 면 정상 적 인 로그 인 이 아니 라 차단 하 는 것 을 설명 합 니 다.정상적으로 로그 인 할 때 만 session 에서 user 라 는 속성 을 만 듭 니 다.이 때 는 정상적으로 로그 인 할 수 있 습 니 다.로그아웃 후 사이트 주 소 를 붙 여 도 로그 인 할 수 있 으 니 차단 해 야 합 니 다.
구체 적 절차
필 터 를 만 들 고 등록 합 니 다.
public class SysFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
// , session
User user = (User) request.getSession().getAttribute(Constant.USER_SESSION);
if(user == null){//session , ,
response.sendRedirect("error.jsp");
}else{
chain.doFilter(req , resp);
}
}
public void destroy() {
}
}
<!-- -->
<filter>
<filter-name>SysFilter</filter-name>
<filter-class>com.tong.filter.SysFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SysFilter</filter-name>
<url-pattern>/jsp/*</url-pattern>
</filter-mapping>
암호 수정암호 수정 은 데이터베이스 와 접촉 해 야 하기 때문에 dao 층,service 층,servlet 층 이라는 선 을 가 야 합 니 다.
2.항목 을 쓰 고 아래 에서 위로 쓰 는 것 을 권장 합 니 다.
3.현재 사용자 암호 인터페이스 수정
public interface UserDao
리
//
// int , ;
public int updatePwd(Connection connection, int id, String pwd)throws Exception;
4.Dao 인터페이스 구현 클래스 작성public class UserDaoImpl implements UserDao
리
public int updatePwd(Connection connection, int id, String pwd)
throws Exception {
// TODO Auto-generated method stub
int flag = 0;
PreparedStatement pstm = null;
if(connection != null){
String sql = "update smbms_user set userPassword= ? where id = ?";
Object[] params = {pwd,id};
flag = BaseDao.execute(connection, pstm, sql, params);
BaseDao.closeResource(null, pstm, null);
}
return flag;
}
5.비 즈 니스 계층 인터페이스public interface UserService
리
// userId
public boolean updatePwd(int id, String pwd);
6.비 즈 니스 계층 인터페이스 구현 클래스public class UserServiceImpl implements UserService
리
public boolean updatePwd(int id, String pwd) {
boolean flag = false;// , 。
Connection connection = null;
try{
connection = BaseDao.getConnection();
if(userDao.updatePwd(connection,id,pwd) > 0)
flag = true;
}catch (Exception e) {
e.printStackTrace();
}finally{
BaseDao.closeResource(connection, null, null);
}
return flag;
}
7.servlet 재 활용 을 위해 추출 방법 이 필요 하 다 는 것 을 기억 하 세 요.
// servlet
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if(method.equals("savepwd")){
this.updatePwd(req , resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
public void updatePwd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// session Uer
Object o = req.getSession().getAttribute(Constant.USER_SESSION);
String newPassword = req.getParameter("newPassword");
boolean flag = false;
if(o != null && newPassword != null && newPassword.length() != 0){//Uer newPassword ,
UserServiceImpl userService = new UserServiceImpl();
flag = userService.updatePwd(((User) o).getId(), newPassword);
if(flag){
req.setAttribute("message" , " , , ");
// , session。 ,session , , , session
req.getSession().removeAttribute(Constant.USER_SESSION);
}else {
req.setAttribute("message" , " ");
}
}else{
req.setAttribute("message" , " ");
}
req.getRequestDispatcher("pwdmodify.jsp").forward(req , resp);
}
}
여기 서 SMBMS 슈퍼마켓 주문 관리 시스템 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 SMBMS 슈퍼마켓 주문 관리 시스템 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.