接:

接下来配置类

UserController

package com.chatRotbot.controller;
import com.chatRotbot.model.User;
import com.chatRotbot.service.IUserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpSession;
@Controller
public class UserController {
private static Logger logger = Logger.getLogger(UserController.class);
@Autowired
private IUserService userService;
@RequestMapping("/gotoLogin")
public String gotoLogin(){
return "login";
}
@RequestMapping("/login")
public String login(@RequestParam(value="loginName" ,required=true) String loginName,
String password, Model model, HttpSession session){
logger.info("登陆用户名:"+loginName);
//用redirect和forward标签返回
//注意:用这两个标签必须写全路径,不适应视图解析的逻辑视图
if(StringUtils.isNotEmpty(loginName)&&
StringUtils.isNotEmpty(password)){
User user = userService.loginUser(loginName, password);
if(user!=null){
logger.info("登陆成功");
session.setAttribute("user", user);
return "redirect:/main" ;
}else{
model.addAttribute("loginFlag","登陆失败,请输入正确的用户名和密码");
return "forward:/WEB-INF/pages/login.jsp";
}
}else{
model.addAttribute("loginFlag","登陆失败,请输入正确的用户名和密码");
return "forward:/WEB-INF/pages/login.jsp";
}
}
@RequestMapping("/main")
public String main(){
return "main/main";
} }

IUserService
package com.chatRotbot.service;
import com.chatRotbot.model.User;
public interface IUserService {
/**
* 登陆验证
* @param loginName
* @param password
* @return
*/
public User loginUser(String loginName,String password); }
UserServiceImpl
package com.chatRotbot.service.impl;
import com.chatRotbot.dao.mapper.UserMapper;
import com.chatRotbot.model.User;
import com.chatRotbot.service.IUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements IUserService {
@Resource
private UserMapper userMapper; /**
* 登录
* @param loginName
* @param password
* @return
*/ public User loginUser(String loginName, String password) {
User user = new User();
user.setUserName(loginName);
List<User> userList = userMapper.getUserList(user);
if(userList.isEmpty()){
return null;
}else{//进行密码比对
String ecnryptPassword = userList.get(0).getPassword();
if(ecnryptPassword.equals(password)) {
return userList.get(0);
}
else {
return null;
}
}
}
}

UserMapper dao文件中的文件编码
import com.chatRotbot.model.User;

import java.util.List;

public interface UserMapper {

    /**
* 根据条件查询用户列表
* @param user
* @return
*/
List <User> getUserList(User user);
}
UserMapper.xml
<?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">
<!-- 设置为IUserDao接口方法提供sql语句配置 -->
<mapper namespace="com.chatRotbot.dao.mapper.UserMapper">
<sql id = "all_user_columns">
id,email,password,username,role,status,regTime,regIp
</sql>
<!--将通用的sql查询条件抽取出来,成为sql片段 ,给不同方法应用 -->
<sql id="query_user_sql_where">
<if test="userName!=null">
AND username LIKE '%${userName}%'
</if>
<if test="password!=null">
AND PASSWORD= #{password}
</if>
</sql>
<select id="getUserList" parameterType="user" resultType="user">
SELECT
<include refid="all_user_columns"></include>
FROM user
<where>
<include refid="query_user_sql_where"></include>
</where>
</select>
</mapper>

User
package com.chatRotbot.model;

 import java.util.Date;

public class User {
public long getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
private int userId;
private String email;
private String password;
private String userName;
private String role;
private int status;
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public Date getRegTime() {
return regTime;
}
public void setRegTime(Date regTime) {
this.regTime = regTime;
} public String getRegIp() {
return regIp;
}
public void setRegIp(String regIp) {
this.regIp = regIp;
}
private Date regTime;
private String regIp;
}
 login.jsp 登录界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录</title>
<style type="text/css">
html,body{height:100%;}
/*canvas开始*/
#canvas {position: absolute;z-index: -1;display: block;}
/*canvas结束*/
#login {
width: 400px;
height: 320px;
background: #fff;
position: absolute; /*绝对定位*/
margin:auto;
top:0px;
left:0px;
right:0px;
bottom:0px;
box-shadow: 0px 0px 10px #666;
border-radius: 4px; /*圆角*/
}
.well{background-color: #062A36;}
h2{font-family:"微软雅黑";font-size:24px;color:#B94846;margin-bottom:28px;}
#loginForm{color:#fff}
</style>
</head>
<body style = "border-radius: 10px;background-size:100% 100% ">
<div class="row" id="login" >
<div class="well col-md-12 center">
<div class="title" style="padding: 5px;text-align:center;">
<h2>登录系统</h2>
</div>
<div id="messageBoxLogin" class="alert alert-error ${empty loginFlag ? 'hide' :''} ">
<label id="loginFlag" class="error">${loginFlag}</label>
</div>
<form id="loginForm" action="login" method="post">
<label class="input-label" for="loginName">登录名</label>
<input type="text" id="loginName" name="loginName" value="">
<label class="input-label" for="password">密码</label>
<input type="password" id="password" name="password" >
<input class="btn btn-primary" type="submit" value="登 录" />&nbsp;&nbsp;
</form>
</div>
</div>
</body>
</html>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html>
<html>
<head>项目搭建</head>
<body>
<h1>恭喜您,ssm框架搭建成功</h1> </body>
</html>

新建完成后配置项目运行环境,点击Run-Edit Configurations...

点击加号新建运行环境,选择Tomcat Server-Local

选中新建好的服务器,右边选择Deployment,点击加号-Atifact...

选择第二项

war和war exploded 这里看一下他们两个的区别:

war模式:将WEB工程以包的形式上传到服务器 ;
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;

(1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;

(2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。

(3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。

然后在右边Application context配置你的项目名

终于配置完了,运行Tomcat我们看一下效果吧。

我们启动以后会自动弹出登录界面,这里登录界面有点难看,勿喷啊。

当我们输入密码错误时出现以下界面

当我们输入正确的密码时,界面跳转到 主界面

现在项目算是告一段落了。

打印日志:

2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:861) - DispatcherServlet with name 'springmvc' processing POST request for [/ChatRobot/login]
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:319) - Looking up handler method for path /login
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:326) - Returning handler method [public java.lang.String com.chatRotbot.controller.UserController.login(java.lang.String,java.lang.String,org.springframework.ui.Model,javax.servlet.http.HttpSession)]
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:250) - Returning cached instance of singleton bean 'userController'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.cors.DefaultCorsProcessor.processRequest(DefaultCorsProcessor.java:72) - Skip CORS processing, request is a same-origin one
2018/09/13/17:43:04 INFO [http-bio-8081-exec-2] com.chatRotbot.controller.UserController.login(UserController.java:30) - 登陆用户名:chenyaping
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - Creating a new SqlSession
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@167558b0] was not registered for synchronization because synchronization is not active
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:110) - Fetching JDBC Connection from DataSource
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - JDBC Connection [com.mysql.jdbc.Connection@5407451a] will not be managed by Spring
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - ==> Preparing: SELECT id,email,password,username,role,status,regTime,regIp FROM user WHERE username LIKE '%chenyaping%'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - ==> Parameters:
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - <== Total: 2
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:54) - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@167558b0]
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:327) - Returning JDBC Connection to DataSource
2018/09/13/17:43:04 INFO [http-bio-8081-exec-2] com.chatRotbot.controller.UserController.login(UserController.java:38) - 登陆成功
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1620) - Invoking afterPropertiesSet() on bean with name 'redirect:/main'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:250) - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1241) - Rendering view [org.springframework.web.servlet.view.RedirectView: name 'redirect:/main'; URL [/main]] in DispatcherServlet with name 'springmvc'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000) - Successfully completed request
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:861) - DispatcherServlet with name 'springmvc' processing GET request for [/ChatRobot/main]
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:319) - Looking up handler method for path /main
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:326) - Returning handler method [public java.lang.String com.chatRotbot.controller.UserController.main()]
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:250) - Returning cached instance of singleton bean 'userController'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:947) - Last-Modified value for [/ChatRobot/main] is: -1
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1620) - Invoking afterPropertiesSet() on bean with name 'main/main'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:250) - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1241) - Rendering view [org.springframework.web.servlet.view.JstlView: name 'main/main'; URL [/WEB-INF/pages/main/main.jsp]] in DispatcherServlet with name 'springmvc'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:166) - Forwarding to resource [/WEB-INF/pages/main/main.jsp] in InternalResourceView 'main/main'
2018/09/13/17:43:04 DEBUG [http-bio-8081-exec-2] org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000) - Successfully completed request

总结:

  我这里只是简单的搭建了一个 ssm框架,实现页面的登录功能,这才是项目开始冰山一角并且还有很多地方的不足,这里在搭建这个登录功能时也遇到了很多的问题,比如刚开始搭建环境时,Maven版本下的最新版本导致

IntelliJ IDEA一直无法读取,最后下载了低一点版本,还遇到mapper文件一直无法读取,最终参考https://blog.csdn.net/u010504064/article/details/47337307,希望这个简单的搭建能给大家一些帮助和启发。

 
 
 

基于IntelliJ IDEA开发工具搭建SSM框架并实现页面登录功能详细讲解二的更多相关文章

  1. 基于IDEA采用springboot+Mybatis搭建ssm框架简单demo项目的搭建配置流程

    一.通过对比可以原始SSM搭建流程,spring boot省去了大量的配置,极大提高了开发者的效率.原始SSM框架搭建流程见博客: https://www.cnblogs.com/No2-explor ...

  2. 搭建ssm框架,可实现登录和数据展示以及增删改查

    需求: 后台使用ssm(spring-springMVC-mybatis)进行整合 前台使用bootstrap框架 前后台交互使用Ajax进行发送 表结构: 登录页面后显示所有用户信息,可对每条进行增 ...

  3. IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;

    最近玩起IDEA这开发工具,搭建ssm框架测试时,部署项目出现如下问题: 信息: The APR based Apache Tomcat Native library which allows opt ...

  4. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...

  5. 一步一步教你用IntelliJ IDEA 搭建SSM框架(1)

    1.基本概念 SSM框架指:Spring MVC + Spring + MyBatis Spring MVC是一种web层mvc框架,用于替代servlet,处理|响应请求,获取表单参数,表单校验等 ...

  6. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)

    在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...

  7. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

    这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+M ...

  8. 一步一步教你用IntelliJ IDEA 搭建SSM框架(3)——实现用户登录功能

    上面两篇博客已经详细的介绍了在IntelliJ IDEA 搭建SSM框架的整个过程,下面我们就要在搭建好的环境里实现我们想要的功能了.本文完成用户的登录功能,主要包括:用户注册,登录,编辑,退出,注销 ...

  9. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建四:配置springmvc

    在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试的基础上 继续进行springmvc的配置 一:配置完善web.xml文件

随机推荐

  1. 【笔记】Rancher2.1容器云平台新特性

    2018年10月6日,Rancher2.1版本正式发布.相比Rancher2.0版本,提供了许多新的特性: 1.支持集群和项目级别的硬件资源配额管理:2.支持3个节点的Rancher Server的管 ...

  2. ABP EventBus(事件总线)

    事件总线就是订阅/发布模式的一种实现    事件总线就是为了降低耦合 1.比如在winform中  到处都是事件 触发事件的对象  sender 事件的数据    e 事件的处理逻辑  方法体 通过E ...

  3. Caused by : java.io.IOException: Cleartext HTTP traffic to 《“url”》 not permitted

    一.问题原因: 根本原因是从Android9.0开始,出于完全因素考虑,默认不再支持http网络请求,需要使用 https. 二.解决方案: 解决的基本思路是:对指定的网址进行过滤,强制允许指定网址继 ...

  4. sublime text3使用

    设置tab键为若干空格 { "tab_size": 4, "translate_tabs_to_spaces": true }

  5. cookie 和session 详解

    cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于c ...

  6. Prim算法、Kruskal算法和最小生成树 | Minimum Spanning Tree

    graph to tree非常有趣! 距离的度量会极大地影响后续的分析,欧式距离会放大差异,相关性会缩小差异,导致某些细胞群分不开. 先直观看一下,第一个是Prim,第二个是Kruskal.但是肯定都 ...

  7. ASP.NET MVC CSRF (XSRF) security

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站 ...

  8. 微信小程序 页面跳转方式

    // 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面. // 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,但是 redirectT ...

  9. WEB UI基础八:链接跳转到标准的工单界面

    接以前做的例子,用组件做了个搜索界面,明细里添加了object_id的链接: method GET_P_OBJECT_ID. "#EC NEEDED ** generated by sear ...

  10. Myeclipse在debug模式下没加断点程序卡住,start模式下可以正常启动

    参考<eclipse在debug模式下卡住,start模式下可以启动>,地址:https://blog.csdn.net/jack_chen1994/article/details/761 ...