基于Spring的用户的登录模块
通过Spring实现用户的登录模块
1.创建一个Maven项目
然后填项目名,一直下一步即可。
2.修改pom.xml文件
主要是添加Spring的依赖包,以及数库的jdbc等依赖。
为了方便修改,提前设置好Spring版本。
添加依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Spring依赖 --> <!-- 1.Spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- 2.Spring dao依赖 --> <!-- spring-jdbc包括了一些如jdbcTemplate的工具类 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!-- 3.Spring web依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.13</version> </dependency> <!-- 4.Spring test依赖:方便做单元测试和集成测试 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.10</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.10</version> <scope>runtime</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> </dependencies>
3.创建项目目录
创建以下3个文件夹,分别存放Java代码,xml配置文件,测试用代码
分别在每个文件夹上右键,选择对应的选项。
设置完成之后,的main目录如下
在java文件创建,包,存放相应功能文件。
4.开始写后台程序
1)首先需要一个用户类:对应数据库的表格,userid设置为主键。
public class User { private int userid; private String username; private String password; public void myname(){ System.out.println("wys"); } 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; } }
2)在applicationContext.xml中配置数据源。
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 添加扫描包--> <context:component-scan base-package="com.spring.*"/> 扫描包的目录,需要修改为包的目录,为了方便可以用 * 代替,*为通配符 <context:annotation-config /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">--> <!--数据库驱动 --> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <!--连接数据库的url --> <property name="url" value="jdbc:mysql://127.0.0.1:3306/job" /> 此处需要修改对应的数据库名 <!--连接数据库的用户名 --> <property name="username" value="root" /> <!--连接数据库的密码 --> <property name="password" value="root" /> </bean> <!-- 2配置JDBC模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 默认必须使用数据源 --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置事务管理器--> <bean id="transactionManager" class= "org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
3)实现dao层
@Repository public class UserDao { @Autowired //自动注入的注解 private JdbcTemplate jdbcTemplate; public User findByUserName(String username){ String sql = "select * from j1_user where username = ?"; //sql语句 // 创建一个新的BeanPropertyRowMapper对象 RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class); try { return jdbcTemplate.queryForObject(sql,new Object[]{username},rowMapper); //当返回数据为0或者大于1时会报错,所以添加try catch捕获异常。 }catch (EmptyResultDataAccessException e){ return null; } } }
4)service
@Service public class UserService { @Autowired private UserDao userDao;
public User findByUserName(String username){ return userDao.findByUserName(username); } }
5)现在基本已完成数据持久层操作,然后编写测试类测试一下。
在对应的测试类上alt+回车
会生成对应的测试类和测试方法,在目录test下。
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:/applicationContext.xml" }) public class UserServiceTest { @Autowired private UserService userService; @Test public void findByUserName() { User user = userService.findByUserName("123"); assertEquals(user.getUsername(),"123"); } }
执行这个类,可以查看对应的测试方法。
6)Controller和前端
@Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = {"index"}) public String index(HttpServletRequest request, String username, String password) { return "index"; }
@RequestMapping(value = {"login"})
public ModelAndView login(HttpServletRequest request, String username, String password) {
ModelAndView ma=new ModelAndView();
User user=userService.findByUserName(username);
if(null!=user) {
if(user.getPassword().equals(password)) {
ma.addObject("user", user);
ma.setViewName("main");
}else {
ma.setViewName("login");
}
}else {
ma.setViewName("login");
}
return ma;
}
}
7)配置web.xml
为了让控制器可以拦截请求,需要配置web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!--<web-app>--> <display-name>Archetype Created Web Application</display-name> <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> <servlet> <servlet-name>DispatcherServlet</servlet-name><!--在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。--> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> <!--会拦截URL中带“/”的请求。--> </servlet-mapping> </web-app>
8)在resources下增加配置文件 spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 --> <context:component-scan base-package="com.spring.controller" /> <mvc:default-servlet-handler/> <mvc:annotation-driven/><!-- 开启注释 --> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" />
<!-- prefix是在返回值加入前缀,suffix加入后缀 -->
</beans>
9)index界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html>
<head> <meta charset="utf-8"> <title>登录</title> </head> <body > <form action="/user/login" method="post"> <table> <tr> <td>用户名</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>密码</td> <td><input type="password" name="password" /></td> </tr> <tr> <td><input type="submit" value="登录" /></td> </tr> </table> </form> </body> </html>
main界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <span style="font-size: 30px"> 欢迎您的登录 </span> <table border="1px"> <tr> <td>当前在线用户</td> </tr> </table> </body> </html>
10)配置tomact,与普通maven项目配置基本相同。
启动项目
登录完成。
整个项目目录如下: