版权声明:未经本人同意,不得私自转载 https://blog.csdn.net/weixin_41866744/article/details/87898618
1.依赖jar:
2.web.xml 与 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <!-- 数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/ssm"></property> <property name="username" value="root"></property> <property name="password" value="smallming"></property> </bean> <!-- SqlSessinFactory对象 --> <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="typeAliasesPackage" value="com.tao.pojo"></property> </bean> <!-- 扫描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.tao.mapper"></property> <property name="sqlSessionFactory" ref="factory"></property> </bean> <!-- 注入 --> <bean id="usersService" class="com.tao.service.impl.UsersServiceImpl"> <property name="usersMapper" ref="usersMapper"></property> </bean> <!-- aop --> <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> <bean id="mybefore" class="com.tao.advice.MyBefore"></bean> <bean id="myafter" class="com.tao.advice.MyAfter"></bean> <aop:config> <aop:pointcut expression="execution(* com.tao.service.impl.UsersServiceImpl.login(..))" id="mypoint"/> <aop:advisor advice-ref="mybefore" pointcut-ref="mypoint"/> <aop:advisor advice-ref="myafter" pointcut-ref="mypoint"/> </aop:config> </beans>
log4j.properties:
log4j.rootCategory=ERROR, CONSOLE ,LOGFILE log4j.logger.com.tao.mapper=DEBUG log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%C %p %m %n log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=MyBatis.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%C %m %L %n
mapper接口及映射:
package com.tao.mapper; import com.tao.pojo.Users; public interface UsersMapper { Users selByUsers(Users users); }
<?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="com.tao.mapper.UsersMapper"> <select id="selByUsers" parameterType="users" resultType="users"> select * from users where username=#{username} and password=#{password} </select> </mapper>
service及其实现类:
package com.tao.service; import com.tao.pojo.Users; public interface UsersService { Users login(Users users); }
package com.tao.service.impl; import com.tao.mapper.UsersMapper; import com.tao.pojo.Users; import com.tao.service.UsersService; public class UsersServiceImpl implements UsersService{ private UsersMapper usersMapper; public UsersMapper getUsersMapper() { return usersMapper; } public void setUsersMapper(UsersMapper usersMapper) { this.usersMapper = usersMapper; } @Override public Users login(Users users) { return usersMapper.selByUsers(users); } }
servlet:
package com.tao.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.tao.pojo.Users; import com.tao.service.UsersService; import com.tao.service.impl.UsersServiceImpl; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private UsersService usersService; @Override public void init() throws ServletException { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); usersService = wac.getBean("usersService",UsersServiceImpl.class); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); Users users = new Users(); users.setUsername(req.getParameter("username")); users.setPassword(req.getParameter("password")); Users user = usersService.login(users); if(user!=null){ resp.sendRedirect("main.jsp"); }else{ resp.sendRedirect("login.jsp"); } } }
前置后置处理通知类:
package com.tao.advice; import java.lang.reflect.Method; import java.util.Date; import org.apache.log4j.Logger; import org.springframework.aop.MethodBeforeAdvice; import com.tao.pojo.Users; public class MyBefore implements MethodBeforeAdvice { @Override public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable { Users users = (Users) arg1[0]; Logger logger = Logger.getLogger(MyBefore.class); logger.info(users.getUsername()+"在"+new Date().toLocaleString()+"进行登录"); } }
package com.tao.advice; import java.lang.reflect.Method; import org.apache.log4j.Logger; import org.springframework.aop.AfterReturningAdvice; import com.tao.pojo.Users; public class MyAfter implements AfterReturningAdvice{ /* * arg0 被通知方法的返回值 * arg1 被通知的方法对象 * arg2 被通知方法的参数 * arg3 被代理的对象 */ @Override public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable { Logger logger = Logger.getLogger(MyAfter.class); Users users = (Users) arg2[0]; if(arg0!=null){ logger.info(users.getUsername()+"登录成功!"); }else{ logger.info(users.getUsername()+"登录失败!"); } } }