Spring+Mybatis之登录功能demo
其实工作之后就没有用过Spring+Mybatis的框架了,因为公司有一个自己开发的框架,讲道理,其实这个与Spring+Mybatis整合很是神似。当然性能上还是比不上Spring+Mybatis所整合的框架的。之前学习的时候,是学的Spring+Mybatis框架,其实已经忘记很多了,今天翻开之前的代码看了一下了,现在顺便做个总结加深一下自己的印象吧。
其实一个系统的登录还是比较重要的,此处也只是写一个简单的demo。对于一个新的项目,当然所有的东西都要从头开始了。首先需要新建以下几个package

其他的先不说,先将所需要的jar包拷贝到lib文件夹下面

此处需要注意的是,由于我连接数据库是用的是c3p0连接池。当然也可以用DBCP连接池。
可以先写好一个配置文件用于连接数据库的,我这连接的数据不是oracle,而是MySQL,该配置文件的后缀名为.properties

该配置文件信息,需要以这种键值对的形式存在,因为在spring-mvc.xml文件中需要读取该配置文件,也就是根据其key值来获得其value值
然后先配置一下web.xml文件中的信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>springmvc</servlet-name>
<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>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

该web.xml文件中就是配置Spring前端单一控制器的。就也是spring-mvc.xml。该项目的所以servlet请求也都是后缀名为.do的
接下来就是配置spring-mvc.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"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <context:component-scan base-package="com"></context:component-scan>
<!-- 读取数据库配置文件 -->
<util:properties id="jdbc" location="classpath:db.properties"></util:properties>
<!-- 配置数据库连接池 -->
<bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="#{jdbc.driver}"></property>
<property name="jdbcUrl" value="#{jdbc.url}"></property>
<property name="user" value="#{jdbc.user}"></property>
<property name="password" value="#{jdbc.password}"></property>
<property name="minPoolSize" value="#{jdbc['min.pool.size']}"></property>
<property name="maxPoolSize" value="#{jdbc['max.pool.size']}"></property>
</bean> <!-- 配置SqlSessionFactoryBean 添加两个属性dataSource以及mapperLocations -->
<bean id="SqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="c3p0"></property>
<property name="mapperLocations" value="classpath:com/entity/*.xml"></property>
</bean>
<!-- 配置MapperFactoryBean -->
<!-- <bean id="mapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="sqlSessionFactory" ref="SqlSession"></property>
<property name="mapperInterface" value="com.dao.EmpMapper"></property>
</bean>
-->
<!-- 配置MapperScannerConfigurer指定扫描一个包下面的所有接口对象,从而注册成一个MapperFactoryBean对象 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao"></property>
<!-- <property name="sqlSessionFactory" ref="SqlSession"></property> -->
<!--可以指定扫描包里面的某些接口生成MapperFactoryBean -->
<property name="annotationClass"
value="com.annotation.MybatisRegist"></property> </bean> <!-- 组件扫描 -->
<context:component-scan base-package="com"></context:component-scan>
<!-- 开启映射注解路径 -->
<mvc:annotation-driven/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean> <!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 指定的请求都会被拦截 -->
<mvc:mapping path="/*/*"/>
<!-- 指定的请求不会被拦截 -->
<mvc:exclude-mapping path="/login/*"/>
<bean class="com.controller.DemoInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
关于spring-mvc.xml 文件的配置,我也都写了注释
配置文件都准备好了,对于登录操作是需要涉及到数据库中的表的,有表的话,那么在后台就需要新建一个属性与表字段对应的实体类
该实体类放在com.entity 包中

然后再新建一个登录页面吧,该页面放在jsp文件夹中
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<title>Insert title here</title>
<style type="text/css">
h1,h2,h3,h4,form,p{margin: 0px;padding: 0px}
.form{
margin: 0px auto;
padding: 2px;
border: 2px solid gray;
width: 180px;
float:left;
}
.form h2{
text-align:center;
background: black;
color: white;
}
.form p{
background: #ddd;
padding: 3px;
}
.form p input{
width: 120px;
} .form h3 {
background: #ddd;
text-align:center;
}
.form #p{
background: #ddd;
color:red;
} </style>
</head>
<body>
<div class="form">
<form action="login.do" method="post">
<h2>登录</h2>
<p>用户:<input name="user_name" value="${u.user_name}"/></p>
<p>密码:<input type="password" name="password"></p>
<p id="p"> ${messag}</p>
<h3><input type="submit" value="登录"></h3>
</form>
</div> </body>
</html>
该页面需要注意一点的是:需要引入jstl标准标签库

成型的登录页面

现在数据库连接,spring相关的配置,网页,实体类都写好了,那么接下来就是写后台代码了。
在写后台代码之前需要先写一个类,用于为接口做注解映射的,该类放在com.annotation包下

有个疑问:该注解怎么用呢?
答:在每个接口上都加上该注解标记

新建一个接口,放在com.dao包下面

看该接口就清楚,其实登录的本质就是根据用户名来查询
接下来就需要写一下登录的业务逻辑类,该类放在com.service
package com.service; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.dao.UserMapper;
import com.entity.User;
@Service
public class UserService {
@Resource
UserMapper mapperu; public User login(String user_name,String password) throws EmptyParamException, ErrorParamException{
System.out.println(user_name);
if(user_name.equals("")){ throw new EmptyParamException("用户名不能为空");
// return null;
}
if(password.equals("")){
throw new EmptyParamException("密码不能为空");
//return null;
}
User user=mapperu.findBy(user_name);
if(user==null){
throw new ErrorParamException("用户名错误"); }
if(user.getPassword().equals(password)){
return user;
}
throw new ErrorParamException("密码错误"); }
public User findby(String user_name){
User user=mapperu.findBy(user_name);
return user;
} }
需要注意的是,该类中抛出了两个异常,因此需要写两个异常类,也放在com.service包中



这些都写好了,那么就写一下控制层的代码,该代码写在com.controller包下
首先在写登录方法前,需要写上需要的注解注入标记

此处我并不是让用户直接访问一个登录页面的,而是通过一个请求来访问的

该方法用于用户在地址栏输入
然后跳到登录界面
进登录界面后,用户填好登录信息,按登录按钮,则会发送一个后缀名.do的请求,则在控制器中找到该请求的方法

登录成功则会跳到需要的页面,没有登录成功则会发送一个提示给前台
最后写一下,登录的查询语句,该语句写在一个与用户实体类所对应的xml文件中,该文件也新建在com.entity

需要注意的是:该sql语句中的ID与接口的方法名所一致,该文件中namespace要注明该sql语句所对应的接口
感觉框架配置还是比较繁琐的,总结下来还是有很多东西的。但确实省了不少代码。
Spring+Mybatis之登录功能demo的更多相关文章
- SpringMVC+Spring+Mybatis实现登录注册Demo
使用环境:MyEclipse/Eclipse + Tomcat + MySql. 使用技术:SpringMVC + Spring + Mybatis. 实现效果 登录页面: 密码错误提示 登录成功后 ...
- Spring+Mybatis之注册功能demo
这次先注册功能的是基于登录之后,所以很多配置,实体类等就不再赘述了. 首先也不是直接在地址栏输入一个网页就可以到注册页面的.而是需要通过后台发送一个请求从而跳转到注册页面 先写注册页面,body部分 ...
- Struts+Hibernate+Spring实现用户登录功能
通过登录案例实现三大框架之间的整合,登录功能是任何系统和软件必不可少的一个模块,然而通过这个模块来认识这些复杂的框架技术,理解数据流向和整个设计思路是相当容易的.只有在掌握了这些小模块的应用后,才能轻 ...
- Spring+MyBatis实践—登录和权限控制
1.实现用户登录功能: 通过session来实现用户登录功能.在用户登录时,将用户的相关信息放在HttpSession对象用,其中HttpSession对象可以通过HttpServletRequest ...
- PHP实现登录功能DEMO
PHP实现登录的原理是什么呢?就是利用Session实现的,用户访问网站,系统会自动在服务器生成一个Session文件,这个Session可以用来存储用户的登录信息.好了,这是基本储备,我们下面来实现 ...
- springboot+mybatis实现登录功能,返回json
1.新建maven项目(pom) <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- Django学习笔记第六篇--实战练习二--简易实现登录注册功能demo
一.绪论: 简易实现登录功能demo,并没有使用默认身份验证模块,所以做的也很差,关闭了csrf保护,没有认证处理cookie和session,只是简单实现了功能.另外所谓的验证码功能是伪的. 二. ...
- 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)
由于本人愚钝,整合ssm框架真是费劲了全身的力气,所以打算写下这篇文章,一来是对整个过程进行一个回顾,二来是方便有像我一样的笨鸟看过这篇文章后对其有所帮助,如果本文中有不对的地方,也请大神们指教. 一 ...
- Springmvc+Spring+Mybatis实现员工登录注册功能
ssm实现用户注册以及登录功能..转载请标明出处 http://www.cnblogs.com/smfx1314/p/smfx1314.html 前端bootstrap 所使用的IDE是eclips ...
随机推荐
- ios的认识
刚进了ios兴趣班,第一次使用苹果电脑,因为苹果电脑和windows电脑使用的区别很大.所以老师教我们苹果电脑的基本使用,以及关于苹果产品的一些认识.我听得热血沸腾,对苹果开发越来越感兴趣,相信下次上 ...
- Raspberry Pi开发之旅-空气温湿度检测(DHT11)
一.首先,简单介绍下DHT11: DHT11是一个温湿度传感器,分为3个接口,分别为:VCC, DATA, GND 引脚号 名称 类型 说明 1 VCC 电源 +级,输入3V-5.5V 2 DATA ...
- CDR软件-CorelDRAW软件下载,618活动
618我有诚意,你呢? 不花钱的618,是残缺的618 给自己一个放肆shopping的机遇 活动力度不够大? 继续升级,终极体验 618疯狂倒计时! 同志们,如果你错过了之前的抢先购和升级活动 那么 ...
- docker安装kong和kong-dashboard
1:docker安装遵循官方手册 2:安装kong 参考文档:https://getkong.org/install/docker/ 安装过程基本和文档一致,文档十分简单清晰. 但应注意,为了最新版k ...
- PAT 1105 Spiral Matrix
This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi ...
- Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)
题目链接: https://codeforces.com/contest/432/problem/D 题解: 做法一: KMP 显然next树上\(n\)的所有祖先都是答案,出现次数为next树子树大 ...
- 【Codeforces 1114B】Yet Another Array Partitioning Task
[链接] 我是链接,点我呀:) [题意] 让你把数组分成k个连续的部分 使得每个部分最大的m个数字的和最大 [题解] 把原数组降序排序 然后选取前m*k个数字打标记 然后对于原数组 一直贪心地取 直到 ...
- 字符串拼接原理 javac 和 javap
一.新建一个 Test1 类 public class Test1 { public static void main(String[] args) { String a = "a" ...
- [luoguP1993] 小 K 的农场(差分约束 + spfa 判断负环)
传送门 差分约束系统..找负环用spfa就行 ——代码 #include <cstdio> #include <cstring> #include <iostream&g ...
- CentOS的free命令
https://blog.csdn.net/for_tech/article/details/53044610 https://www.58jb.com/html/145.html