diff --git a/IoC/src/ActorArrangable.java b/IoC/src/ActorArrangable.java new file mode 100644 index 0000000000000000000000000000000000000000..ea347aa62c28f131cbbcb81ea3b148a7a3affb16 --- /dev/null +++ b/IoC/src/ActorArrangable.java @@ -0,0 +1,14 @@ +public class ActorArrangable { + void injectGeli(GeLi geli); + +} +public class MoAttack implements ActorArrangable{ + public GeLi geli; + public void injectGeli(GeLi geli){ + this.geli = geli; + + } + public void cityGateAsk(){ + geli.responseAsk("墨者革离") + } +} diff --git a/IoC/src/MoAttack.java b/IoC/src/MoAttack.java new file mode 100644 index 0000000000000000000000000000000000000000..ffcf703db4bd4fa14aa04ffbc44bde7a73681c73 --- /dev/null +++ b/IoC/src/MoAttack.java @@ -0,0 +1,16 @@ +public class MoAttack { + private GeLi geli; + public MoAttack(GeLi geeli){ + this.geli = geli; + } + public void cityGateAsk(){ + geli.responseAsk("墨者革离!"); + } +} +public class Director{ + public void director(){ + GEli geli =new LiuDeHua(); + MoAttack moAttack = new MoAttack(geki); + moAttack.cityGateAsk(); + } +} diff --git a/IoC/src/MoAttack1.java b/IoC/src/MoAttack1.java new file mode 100644 index 0000000000000000000000000000000000000000..f700b41314b14cf4ad873523ebd0167e6f51888b --- /dev/null +++ b/IoC/src/MoAttack1.java @@ -0,0 +1,18 @@ +public class MoAttack1 { + private GeLi; + public void setGeli(Geli geli){ + this,geli = geli; + } + public void cityGateAsk(){ + geli.responceAsk("墨者革离"); + } +} +public class Director{ + public void director(){ + GeLi goli =new LiuDeHua(); + MoAttack moAttack = new MoAttack(); + moAttack.setGeli(gili); + moAttack.cityGateAsk(); + } + +} diff --git a/chapter1/chapter1.iml b/chapter1/chapter1.iml new file mode 100644 index 0000000000000000000000000000000000000000..8e8594b54c7b9540fe34562d6615b9805f39075f --- /dev/null +++ b/chapter1/chapter1.iml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/chapter1/src/main/java/com/smart/dao/LoginLogDao.java b/chapter1/src/main/java/com/smart/dao/LoginLogDao.java new file mode 100644 index 0000000000000000000000000000000000000000..d276058362405f42727d2001393e112a6d42bb50 --- /dev/null +++ b/chapter1/src/main/java/com/smart/dao/LoginLogDao.java @@ -0,0 +1,21 @@ +package com.smart.dao; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import com.smart.domain.LoginLog; + +@Repository +public class LoginLogDao { + @Autowired + private JdbcTemplate jdbcTemplate; + + public void insertLoginLog(LoginLog loginLog) { + String sqlStr = "INSERT INTO t_login_log(user_id,ip,login_datetime) " + + "VALUES(?,?,?)"; + Object[] args = {loginLog.getUserId(), loginLog.getIp(), + loginLog.getLoginDate()}; + jdbcTemplate.update(sqlStr, args); + } +} \ No newline at end of file diff --git a/chapter1/src/main/java/com/smart/dao/UserDao.java b/chapter1/src/main/java/com/smart/dao/UserDao.java new file mode 100644 index 0000000000000000000000000000000000000000..8e36bb8d33ac9d2b09fb2e453630a2458fe3a03d --- /dev/null +++ b/chapter1/src/main/java/com/smart/dao/UserDao.java @@ -0,0 +1,46 @@ +package com.smart.dao; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowCallbackHandler; +import org.springframework.stereotype.Repository; + +import com.smart.domain.User; + +@Repository +public class UserDao { + + @Autowired + private JdbcTemplate jdbcTemplate; + + + public int getMatchCount(String userName, String password) { + String sqlStr = " SELECT count(*) FROM t_user " + + " WHERE user_name =? and password=? "; + return jdbcTemplate.queryForInt(sqlStr, new Object[]{userName, password}); + } + + public User findUserByUserName(final String userName) { + String sqlStr = " SELECT user_id,user_name " + + " FROM t_user WHERE user_name =? "; + final User user = new User(); + jdbcTemplate.query(sqlStr, new Object[]{userName}, + new RowCallbackHandler() { + public void processRow(ResultSet rs) throws SQLException { + user.setUserId(rs.getInt("user_id")); + user.setUserName(userName); + } + }); + return user; + } + + public void updateLoginInfo(User user) { + String sqlStr = " UPDATE t_user SET last_visit=?,last_ip=?" + + " WHERE user_id =?"; + jdbcTemplate.update(sqlStr, new Object[]{user.getLastVisit(), + user.getLastIp(), user.getUserId()}); + } +} diff --git a/chapter1/src/main/java/com/smart/domain/LoginLog.java b/chapter1/src/main/java/com/smart/domain/LoginLog.java new file mode 100644 index 0000000000000000000000000000000000000000..5c89fcb9929cd4da3490d3af66a8f9e9ae787134 --- /dev/null +++ b/chapter1/src/main/java/com/smart/domain/LoginLog.java @@ -0,0 +1,47 @@ +package com.smart.domain; + +import java.io.Serializable; +import java.util.Date; + +public class LoginLog implements Serializable { + private int loginLogId; + + private int userId; + + private String ip; + + private Date loginDate; + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public Date getLoginDate() { + return loginDate; + } + + public void setLoginDate(Date loginDate) { + this.loginDate = loginDate; + } + + public int getLoginLogId() { + return loginLogId; + } + + public void setLoginLogId(int loginLogId) { + this.loginLogId = loginLogId; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + +} diff --git a/chapter1/src/main/java/com/smart/domain/User.java b/chapter1/src/main/java/com/smart/domain/User.java new file mode 100644 index 0000000000000000000000000000000000000000..61eb641e08c27bcab1f4b3c5a42d0bdcfac775e1 --- /dev/null +++ b/chapter1/src/main/java/com/smart/domain/User.java @@ -0,0 +1,57 @@ +package com.smart.domain; + +import java.io.Serializable; +import java.util.Date; + +public class User implements Serializable { + private int userId; + + private String userName; + + private String password; + + private String lastIp; + + private Date lastVisit; + + public String getLastIp() { + return lastIp; + } + + public void setLastIp(String lastIp) { + this.lastIp = lastIp; + } + + public Date getLastVisit() { + return lastVisit; + } + + public void setLastVisit(Date lastVisit) { + this.lastVisit = lastVisit; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} diff --git a/chapter1/src/main/java/com/smart/service/UserService.java b/chapter1/src/main/java/com/smart/service/UserService.java new file mode 100644 index 0000000000000000000000000000000000000000..28abe85cb375a217b296df86dec7cd7360de72a1 --- /dev/null +++ b/chapter1/src/main/java/com/smart/service/UserService.java @@ -0,0 +1,37 @@ +package com.smart.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.smart.dao.LoginLogDao; +import com.smart.dao.UserDao; +import com.smart.domain.LoginLog; +import com.smart.domain.User; + +@Service +public class UserService { + + @Autowired + private UserDao userDao; + + @Autowired + private LoginLogDao loginLogDao; + + public boolean hasMatchUser(String userName, String password) { + int matchCount = userDao.getMatchCount(userName, password); + return matchCount > 0; + } + + public User findUserByUserName(String userName) { + return userDao.findUserByUserName(userName); + } + + public void loginSuccess(User user) { + LoginLog loginLog = new LoginLog(); + loginLog.setUserId(user.getUserId()); + loginLog.setIp(user.getLastIp()); + loginLog.setLoginDate(user.getLastVisit()); + loginLogDao.insertLoginLog(loginLog); + } + +} diff --git a/chapter1/src/main/java/com/smart/web/LoginCommand.java b/chapter1/src/main/java/com/smart/web/LoginCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..eda36557f52924e4cfbdb73faa4ada20de5a2ea9 --- /dev/null +++ b/chapter1/src/main/java/com/smart/web/LoginCommand.java @@ -0,0 +1,24 @@ +package com.smart.web; + +public class LoginCommand { + + private String userName; + + private String password; + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/chapter1/src/main/java/com/smart/web/LoginController.java b/chapter1/src/main/java/com/smart/web/LoginController.java new file mode 100644 index 0000000000000000000000000000000000000000..d147de2ddda1da9d738ad3ad17125651aac046c8 --- /dev/null +++ b/chapter1/src/main/java/com/smart/web/LoginController.java @@ -0,0 +1,45 @@ +package com.smart.web; + +import java.util.Date; + +import javax.servlet.http.HttpServletRequest; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import com.smart.domain.User; +import com.smart.service.UserService; + +@Controller +@RequestMapping(value = "/admin") +public class LoginController { + + @Autowired + private UserService userService; + + @RequestMapping(value = "/login.html") + public String loginPage() { + return "login"; + } + + @RequestMapping(value = "/loginCheck.html") + public ModelAndView loginCheck(HttpServletRequest request, LoginCommand loginCommand) { + boolean isValidUser = + userService.hasMatchUser(loginCommand.getUserName(), + loginCommand.getPassword()); + if (!isValidUser) { + return new ModelAndView("login", "error", "用户名或密码错误。"); + } else { + User user = userService.findUserByUserName(loginCommand + .getUserName()); + user.setLastIp(request.getLocalAddr()); + user.setLastVisit(new Date()); + userService.loginSuccess(user); + request.getSession().setAttribute("user", user); + return new ModelAndView("main"); + } + } +} diff --git a/chapter1/src/main/webapp/WEB-INF/jsp/main.jsp b/chapter1/src/main/webapp/WEB-INF/jsp/main.jsp new file mode 100644 index 0000000000000000000000000000000000000000..3233e23e7826671b70e79f7da0082faca59c2325 --- /dev/null +++ b/chapter1/src/main/webapp/WEB-INF/jsp/main.jsp @@ -0,0 +1,13 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + + 景区网站管理 + + +${user.userName},欢迎您进入景区网站后台管理! + + \ No newline at end of file diff --git a/chapter1/src/main/webapp/WEB-INF/web.xml b/chapter1/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000000000000000000000000000000000..eca96aed6fb3eeb7c876376d6b1ffa44a633e08d --- /dev/null +++ b/chapter1/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,29 @@ + + + + contextConfigLocation + classpath:applicationContext.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + + viewspace + + org.springframework.web.servlet.DispatcherServlet + + 3 + + + + viewspace + *.html + +