java web idea spring_Intellij IDEA 构建Spring Web项目 — 用户登录功能

原文:Intellij IDEA 构建Spring Web项目 — 用户登录功能

相关软件:

3、Tomcat(apache-tomcat-6.0.43):http://pan.baidu.com/s/1kUwReQF

4、MySQL(mysql-essential-5.1.68-winx64):http://pan.baidu.com/s/1gdZZgMB

案例来自于《Spring 3.X 企业应用开发实战》 Chapter2 : http://pan.baidu.com/s/1qWXEE3E

1、创建一个普通的Java Web项目

命名为:springwebdemo_3

a29924594654ebefb1fc87255994287f.png

2、手动创建以下目录

其中test为测试目录,可以先创建一个文件夹为test,然后右键,选择Mark Directory As,再选择Test Sources Root即可。

c552f53102893def335f4ee9b1f41b5a.png

db6725f3caf64ac24f052829abb2c38b.png

3、导入相关的jar包

我把Spring开发要用到的jar包都弄成一个文件夹了,把里面所有的jar包复制然后黏贴到项目里面的lib目录下即可。

13f47b9a099fea44ba10ea2bd7fc45cb.png

4、配置项目结构

打开Project Structure(Ctrl+Alt+Shift+S),选择Modules,选择Paths,选择Use module compile output path,两个都选择为刚刚创建的classes文件夹。

768f567bbf8a25cef1c76064c2fd9e6e.png

接着看一下Modules下的Dependencies是否已经加入lib文件夹,如果没有,点击右边的“+”号,选择“Jars or Directories ”,选择刚刚创建的lib文件夹。

如果已经加入则提个勾,表示选中。最后OK即可。

ab1eacce73c60fa1390f2264cc5b0c79.png

5、创建库表

我的数据库用户名为root,密码为123456。

创建库表的SQL语句可参见:\chapter2\schema。

创建数据库sampledb:

178c8b3728122792ecb2319382424529.png

创建表t_user:

319ab25260d327130ba6ea9bd397f651.png

创建表t_login_log:

604e6064c7c7b9eb4af9c0f9f5d78371.png

插入数据:

ea99327d1b8703995d6e9c6b106585c8.png

6、构建主体层

用户领域对象:User

packagebaobaotao.domain;importjava.io.Serializable;importjava.util.Date;/*** Created by gao on 16-3-17.*/

public class User implementsSerializable {private intuserId;privateString userName;privateString password;private intcredits;privateString lastIp;privateDate lastVisit;publicUser() {

}public intgetUserId() {returnuserId;

}public void setUserId(intuserid) {this.userId =userid;

}publicString getUserName() {returnuserName;

}public voidsetUserName(String userName) {this.userName =userName;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}public intgetCredits() {returncredits;

}public void setCredits(intcredits) {this.credits =credits;

}publicString getLastIp() {returnlastIp;

}public voidsetLastIp(String lastIp) {this.lastIp =lastIp;

}publicDate getLastVisit() {returnlastVisit;

}public voidsetLastVisit(Date lastVisit) {this.lastVisit =lastVisit;

}

}

登录日志领域对象:LoginLog.java

packagebaobaotao.domain;importjava.io.Serializable;importjava.util.Date;/*** Created by gao on 16-3-17.*/

public class LoginLog implementsSerializable {private intloginLogId;private intuserId;privateString ip;privateDate loginDate;public intgetLoginLogId() {returnloginLogId;

}public void setLoginLogId(intloginLogId) {this.loginLogId =loginLogId;

}public intgetUserId() {returnuserId;

}public void setUserId(intuserId) {this.userId =userId;

}publicString getIp() {returnip;

}public voidsetIp(String ip) {this.ip =ip;

}publicDate getLoginDate() {returnloginDate;

}public voidsetLoginDate(Date loginDate) {this.loginDate =loginDate;

}publicLoginLog() {

}

}

7、构建持久层

UserDao:

packagebaobaotao.dao;importbaobaotao.domain.User;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.jdbc.core.RowCallbackHandler;importorg.springframework.stereotype.Repository;importjava.sql.ResultSet;importjava.sql.SQLException;/*** Created by gao on 16-3-17.*/@Repositorypublic classUserDao {

@AutowiredprivateJdbcTemplate jdbcTemplate;publicUserDao() {//System.out.println("UserDao");

}public intgetMatchCount(String userName, String password) {

String sqlStr= "select count(*) from t_user where user_name = ? and password = ?";return jdbcTemplate.queryForInt(sqlStr, newObject[]{userName, password});

}public User findUserByUserName(finalString userName) {

String sqlStr= " SELECT user_id,user_name,credits "

+ " FROM t_user WHERE user_name =? ";final User user = newUser();

jdbcTemplate.query(sqlStr,newObject[] { userName },newRowCallbackHandler() {public void processRow(ResultSet rs) throwsSQLException {

user.setUserId(rs.getInt("user_id"));

user.setUserName(userName);

user.setCredits(rs.getInt("credits"));

}

});returnuser;

}public voidupdateLoginInfo(User user) {

String sqlStr= " UPDATE t_user SET last_visit=?,last_ip=?,credits=? "

+ " WHERE user_id =?";

jdbcTemplate.update(sqlStr,newObject[] { user.getLastVisit(),

user.getLastIp(),user.getCredits(),user.getUserId()});

}

}

LoginLogDao:

packagebaobaotao.dao;importbaobaotao.domain.LoginLog;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.stereotype.Repository;/*** Created by gao on 16-3-17.*/@Repositorypublic classLoginLogDao {

@AutowiredprivateJdbcTemplate jdbcTemplate;public voidinsertLoginLog(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);

}

}

8、业务层

packagebaobaotao.service;importbaobaotao.dao.LoginLogDao;importbaobaotao.dao.UserDao;importbaobaotao.domain.LoginLog;importbaobaotao.domain.User;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;/*** Created by gao on 16-3-17.*/@Servicepublic classUserService {

@AutowiredprivateUserDao userDao;

@AutowiredprivateLoginLogDao loginLogDao;public booleanhasMatchUser(String userName, String password){int matchCount =userDao.getMatchCount(userName,password);return matchCount > 0;

}publicUser findUserByUserName(String userName) {returnuserDao.findUserByUserName(userName);

}public voidloginSuccess(User user) {

user.setCredits(5 +user.getCredits());

LoginLog loginLog= newLoginLog();

loginLog.setUserId(user.getUserId());

loginLog.setIp(user.getLastIp());

loginLog.setLoginDate(user.getLastVisit());

userDao.updateLoginInfo(user);

loginLogDao.insertLoginLog(loginLog);

}

}

9、配置applicationContext.xml文件

这里和原来的文件有些差别,因为貌似好像书本里面的源文件运行不了~so,我就改了~

在src目录下创建一个applicationContext.xml文件,点中src,右键,选择New -> File  ->输入applicationContext.xml,确认即可。

输入以下内容:

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

class="org.springframework.jdbc.datasource.DataSourceTransactionManager"p:dataSource-ref="dataSource" />

10、编写单元测试

这里使用Junit4编写单元测试,在test文件夹下的baobaotao.service包创建类TestUserService。

packagebaobaotao.service;importbaobaotao.domain.User;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;importjava.util.Date;import staticorg.junit.Assert.assertEquals;import staticorg.junit.Assert.assertTrue;/*** Created by gao on 16-3-17.*/@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={"/applicationContext.xml"})public classTestUserService {

@AutowiredprivateUserService userService;

@Testpublic voidhasMatchUser(){boolean b1 = userService.hasMatchUser("admin","123456");boolean b2 = userService.hasMatchUser("admin","1111");

assertTrue(b1);

assertTrue(!b2);

}

@Testpublic voidtestFindUserByUserName() {

User user= userService.findUserByUserName("admin");

assertEquals(user.getUserName(),"admin");

}

@Testpublic voidtestAddLoginLog() {

User user= userService.findUserByUserName("admin");

user.setUserId(1);

user.setUserName("admin");

user.setLastIp("192.168.12.7");

user.setLastVisit(newDate());

userService.loginSuccess(user);

}

}

11、运行测试用例

把鼠标放在某个测试方法,比如hasMatchUser()方法,右键,选择Run 'hasMatchUser()',即可运行特定的方法。

当然,也可以把鼠标放在类名那里,右键,选择“TestUserService”,即将类里面的所有方法都运行一遍。

0c25834766ad31f6c45f53ab42ff0b2d.png

看到”All Tests Passed“,表示全部通过啦~~~

786b1f4586d43ea99f30effa12c998e1.png

12、控制层

在src目录下创建包baobaotao.web,在该包下创建类LoginCommand和类LoginController。

LoginCommand:

packagebaobaotao.web;/*** Created by gao on 16-3-17.*/

public classLoginCommand {privateString userName;privateString password;publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}publicString getUserName() {returnuserName;

}public voidsetUserName(String userName) {this.userName =userName;

}

}

LoginController:

packagebaobaotao.web;importbaobaotao.domain.User;importbaobaotao.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.ModelMap;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.servlet.ModelAndView;importjavax.servlet.http.HttpServletRequest;importjava.util.Date;/*** Created by gao on 16-3-17.*/@Controllerpublic classLoginController{

@AutowiredprivateUserService userService;

@RequestMapping(value= "/index.html")publicString loginPage(){return "login";

}

@RequestMapping(value= "/loginCheck.html")publicModelAndView 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(newDate());

userService.loginSuccess(user);

request.getSession().setAttribute("user", user);return new ModelAndView("main");

}

}

}

13、编写JSP视图页面

web文件夹下本来有一个index.jsp,现在再创建login.jsp和main.jsp这两个文件。

23011dd58728a12245654abb8c41e8e2.png

index.jsp:

login.jsp:

宝宝淘论坛登录" method="post">用户名:


密 码:

main.jsp:

User: gao

Date:16-3-17Time: 下午8:42To changethis template use File | Settings |File Templates.--%>

宝宝淘论坛

14、配置Spring MVC框架

1)修改web.xml文件

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0">

baobaotao

contextConfigLocation

classpath:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

baobaotao

org.springframework.web.servlet.DispatcherServlet

2

baobaotao

*.html

index.jsp

2)在WEB-INF下创建一个文件baobaotao-servlet.xml

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

15、配置Tomcat容器,运行程序

Run -> Edit Configuration -> Run/Debug Configurations -> 点击"+"号 -> 选择Tomcat -> 选择Local -> 点击Deployment -> 点击“+” 号 -> 选择springwebdemo_3 ->OK

7842593fb95565c49afb8bca30913820.png

界面:

用户名:admin,密码:123456

97d95359459ceb473b5530897301784e.png

登录成功进入主界面。

22473a36d201ebc6e63d85a950a6b469.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值