• Spring boot实例


    代码下载http://pan.baidu.com/s/1c2aXLkc 密码:2joh

    1、代码包规划

      

    Application主类

     1 package com.smart;
     2 import org.springframework.boot.SpringApplication;
     3 import org.springframework.boot.autoconfigure.SpringBootApplication;
     4 import org.springframework.boot.builder.SpringApplicationBuilder;
     5 import org.springframework.boot.context.web.SpringBootServletInitializer;
     6 import org.springframework.context.annotation.Bean;
     7 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
     8 import org.springframework.transaction.PlatformTransactionManager;
     9 import org.springframework.transaction.annotation.EnableTransactionManagement;
    10 import org.springframework.web.WebApplicationInitializer;
    11 
    12 import javax.sql.DataSource;
    13 
    14 //@Configuration
    15 //@ComponentScan
    16 //@EnableAutoConfiguration
    17 @SpringBootApplication
    18 @EnableTransactionManagement
    19 public class Application  extends SpringBootServletInitializer implements WebApplicationInitializer {
    20     @Bean
    21     public PlatformTransactionManager txManager(DataSource dataSource) {
    22         return new DataSourceTransactionManager(dataSource);
    23     }
    24     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    25         return application.sources(Application.class);
    26     }
    27     
    28     public static void main(String[] args) throws Exception {
    29         SpringApplication.run(Application.class, args);
    30     }
    31 }

    2 、持久层

    UserDao类

    findUserByUserName():根据用户名获取对象

    updateLoginInfo():更新用户积分,最后登录IP及最后登录时间

     1 package com.smart.dao;
     2 import com.smart.domain.User;
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.jdbc.core.JdbcTemplate;
     5 import org.springframework.jdbc.core.RowCallbackHandler;
     6 import org.springframework.stereotype.Repository;
     7 import java.sql.ResultSet;
     8 import java.sql.SQLException;
     9 @Repository
    10 public class UserDao {
    11     private JdbcTemplate jdbcTemplate;
    12 
    13     private final static String MATCH_COUNT_SQL = " SELECT count(*) FROM t_user  " +
    14             " WHERE user_name =? and password=? ";
    15     private final static String UPDATE_LOGIN_INFO_SQL = " UPDATE t_user SET " +
    16             " last_visit=?,last_ip=?,credits=?  WHERE user_id =?";
    17 
    18     public int getMatchCount(String userName, String password) {
    19 
    20         return jdbcTemplate.queryForObject(MATCH_COUNT_SQL, new Object[]{userName, password}, Integer.class);
    21     }
    22 
    23     public User findUserByUserName(final String userName) {
    24         String sqlStr = " SELECT user_id,user_name,credits "
    25                 + " FROM t_user WHERE user_name =? ";
    26         final User user = new User();
    27         jdbcTemplate.query(sqlStr, new Object[]{userName},
    28                 new RowCallbackHandler() {
    29                     public void processRow(ResultSet rs) throws SQLException {
    30                         user.setUserId(rs.getInt("user_id"));
    31                         user.setUserName(userName);
    32                         user.setCredits(rs.getInt("credits"));
    33                     }
    34                 });
    35         return user;
    36     }
    37 
    38     public void updateLoginInfo(User user) {
    39         jdbcTemplate.update(UPDATE_LOGIN_INFO_SQL, new Object[]{user.getLastVisit(),
    40                 user.getLastIp(), user.getCredits(), user.getUserId()});
    41     }
    42     @Autowired
    43     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    44         this.jdbcTemplate = jdbcTemplate;
    45     }
    46 }

    LoginLogDao类

     1 package com.smart.dao;
     2 
     3 import com.smart.domain.LoginLog;
     4 import org.springframework.beans.factory.annotation.Autowired;
     5 import org.springframework.jdbc.core.JdbcTemplate;
     6 import org.springframework.stereotype.Repository;
     7 
     8 @Repository
     9 public class LoginLogDao {
    10     @Autowired
    11     private JdbcTemplate jdbcTemplate;
    12 
    13     //保存登陆日志SQL
    14     private final static String INSERT_LOGIN_LOG_SQL= "INSERT INTO t_login_log(user_id,ip,login_datetime) VALUES(?,?,?)";
    15     
    16     public void insertLoginLog(LoginLog loginLog) {
    17         Object[] args = { loginLog.getUserId(), loginLog.getIp(),
    18                           loginLog.getLoginDate() };
    19         jdbcTemplate.update(INSERT_LOGIN_LOG_SQL, args);
    20     }
    21 }

    3、业务层

    UserService类

     1 package com.smart.service;
     2 
     3 import com.smart.dao.LoginLogDao;
     4 import com.smart.dao.UserDao;
     5 import com.smart.domain.LoginLog;
     6 import com.smart.domain.User;
     7 import org.springframework.beans.factory.annotation.Autowired;
     8 import org.springframework.stereotype.Service;
     9 import org.springframework.transaction.annotation.Transactional;
    10 
    11 @Service
    12 public class UserService {
    13 
    14     private UserDao userDao;
    15 
    16     private LoginLogDao loginLogDao;
    17 
    18 
    19     public boolean hasMatchUser(String userName, String password) {
    20         int matchCount =userDao.getMatchCount(userName, password);
    21         return matchCount > 0;
    22     }
    23     
    24     public User findUserByUserName(String userName) {
    25         return userDao.findUserByUserName(userName);
    26     }
    27 
    28     @Transactional
    29     public void loginSuccess(User user) {
    30         user.setCredits( 5 + user.getCredits());
    31         LoginLog loginLog = new LoginLog();
    32         loginLog.setUserId(user.getUserId());
    33         loginLog.setIp(user.getLastIp());
    34         loginLog.setLoginDate(user.getLastVisit());
    35         userDao.updateLoginInfo(user);
    36         loginLogDao.insertLoginLog(loginLog);
    37     }
    38 
    39     @Autowired
    40     public void setUserDao(UserDao userDao) {
    41         this.userDao = userDao;
    42     }
    43 
    44     @Autowired
    45     public void setLoginLogDao(LoginLogDao loginLogDao) {
    46         this.loginLogDao = loginLogDao;
    47     }
    48 }

    4、展现层

    处理请求:

    LoginCommand

     1 package com.smart.web;
     2 
     3 public class LoginCommand {
     4     private String userName;
     5 
     6     private String password;
     7 
     8     public String getPassword() {
     9         return password;
    10     }
    11 
    12     public void setPassword(String password) {
    13         this.password = password;
    14     }
    15 
    16     public String getUserName() {
    17         return userName;
    18     }
    19 
    20     public void setUserName(String userName) {
    21         this.userName = userName;
    22     }
    23 }

    LoginController

     1 package com.smart.web;
     2 
     3 import com.smart.domain.User;
     4 import com.smart.service.UserService;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.web.bind.annotation.RequestMapping;
     7 import org.springframework.web.bind.annotation.RestController;
     8 import org.springframework.web.servlet.ModelAndView;
     9 import javax.servlet.http.HttpServletRequest;
    10 import java.util.Date;
    11 
    12 @RestController
    13 public class LoginController{
    14     private UserService userService;
    15     
    16     @RequestMapping(value = {"/","/index.html"})
    17     public ModelAndView loginPage(){
    18         return new ModelAndView("login");
    19     }
    20     
    21     @RequestMapping(value = "/loginCheck.html")
    22     public ModelAndView loginCheck(HttpServletRequest request,LoginCommand loginCommand){
    23         boolean isValidUser =  userService.hasMatchUser(loginCommand.getUserName(),
    24                                         loginCommand.getPassword());
    25         if (!isValidUser) {
    26             return new ModelAndView("login", "error", "用户名或密码错误。");
    27         } else {
    28             User user = userService.findUserByUserName(loginCommand
    29                     .getUserName());
    30             user.setLastIp(request.getLocalAddr());
    31             user.setLastVisit(new Date());
    32             userService.loginSuccess(user);
    33             request.getSession().setAttribute("user", user);
    34             return new ModelAndView("main");
    35         }
    36     }
    37 
    38     @Autowired
    39     public void setUserService(UserService userService) {
    40         this.userService = userService;
    41     }
    42 }

    pom.xml配置

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5 
     6     <parent>
     7         <groupId>org.springframework.boot</groupId>
     8         <artifactId>spring-boot-starter-parent</artifactId>
     9         <version>1.3.3.RELEASE</version>
    10     </parent>
    11     <modelVersion>4.0.0</modelVersion>
    12     <artifactId>chapter3</artifactId>
    13     <name>Spring4.x</name>
    14     <packaging>war</packaging>
    15     <dependencies>
    16         <dependency>
    17             <groupId>org.springframework.boot</groupId>
    18             <artifactId>spring-boot-starter-web</artifactId>
    19         </dependency>
    20         <dependency>
    21             <groupId>org.springframework.boot</groupId>
    22             <artifactId>spring-boot-starter-jdbc</artifactId>
    23         </dependency>
    24         <dependency>
    25             <groupId>org.springframework.boot</groupId>
    26             <artifactId>spring-boot-starter-actuator</artifactId>
    27         </dependency>
    28         <dependency>
    29             <groupId>mysql</groupId>
    30             <artifactId>mysql-connector-java</artifactId>
    31             <version>${mysql.version}</version>
    32         </dependency>
    33         <dependency>
    34             <groupId>org.apache.tomcat.embed</groupId>
    35             <artifactId>tomcat-embed-jasper</artifactId>
    36             <scope>provided</scope>
    37         </dependency>
    38         <dependency>
    39             <groupId>javax.servlet</groupId>
    40             <artifactId>jstl</artifactId>
    41         </dependency>
    42         <dependency>
    43             <groupId>org.springframework.boot</groupId>
    44             <artifactId>spring-boot-starter-test</artifactId>
    45             <scope>test</scope>
    46         </dependency>
    47     </dependencies>
    48     <build>
    49         <plugins>
    50             <plugin>
    51                 <groupId>org.springframework.boot</groupId>
    52                 <artifactId>spring-boot-maven-plugin</artifactId>
    53             </plugin>
    54             <plugin>
    55                 <groupId>org.apache.maven.plugins</groupId>
    56                 <artifactId>maven-surefire-plugin</artifactId>
    57                 <configuration>
    58                     <useSystemClassLoader>false</useSystemClassLoader>
    59                 </configuration>
    60             </plugin>
    61         </plugins>
    62     </build>
    63 </project>

    Springboot Controller返回值类型

    1、返回页面

    @Controller
    public class UserController {
        @RequestMapping("/logout")
        public String logout() {
            SecurityUtils.getSubject().logout();
            return "login1";  //返回对应的名的页面
        }
    }

    2、返回返回json格式的数据。

    @Controller
    public class UserController {
        @RequestMapping("/logout")
    @ResponseBody //加入@ResponseBody 会把返回值写入的http相应body里,详情请自行百度
        public String logout() {
    SecurityUtils.getSubject().logout();
    return "login1";
    }

    }
    
    

    3、@RestController注解相当于@ResponseBody + @Controller合在一起的作用

  • 相关阅读:
    杭电2063 过山车 匈牙利算法
    杭电2023 平均成绩
    leveldb性能分析
    linux下libreoffice安装测试
    iptables配置vsftp访问
    vsftp访问异常
    mysql二进制安装
    vi命令
    mysql配置优化
    rsync 配置
  • 原文地址:https://www.cnblogs.com/lwx521/p/7688896.html
Copyright © 2020-2023  润新知