基于SSM框架简单的登录注册模块
登录功能主要代码
Dao层
UserDao.java(接口)
//登录
public User findUser(@Param("id")String id,
@Param("password")String password);
UserDao.xml
<!-- 登录 -->
<select id="findUser" parameterType="map" resultType="User">
select * from t_user where id=#{id} and password=#{password}
</select>
Server层
Server接口
//登录
public User login(String id,String password);
Service实现层
注意:ServerImpl上方需要注解@Service,ServiceImpl用来实现Service接口
@Autowired //依赖注入UserDao
private UserDao userDao;
//登录
@Override
public User login(String id, String password) {
// TODO Auto-generated method stub
User user= userDao.findUser(id, password);
return user;
}
Controller控制器层
@RequestMapping("/login.action")
public void login(String id,String password,HttpSession session,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
try {
User user= userService.login(id, password);
if(user.getId()==""||user.getId()==null) {
response.getWriter().print("<script> alert('输入的账号密码有误,找不到此用户!!!');location.href='index.action' </script>");
}
session.setAttribute("id", user.getId());
session.setAttribute("User",user);
request.getRequestDispatcher("index.jsp").forward(request, response);
} catch (Exception e) {
response.getWriter().print("<script> alert('输入的账号密码有误,找不到此用户!!!');location.href='index.action' </script>");
e.printStackTrace();
}
}
前端代码
<form action="${pageContext.request.contextPath}/login.action" onSubmit="return myfunction()">
<div class="border-radius"></div>
<table>
<tr>
<td><font style="color: #000">账号:</font><input type="text" id="id" name="id" value=""></td>
</tr>
<tr>
<td><font style="color: #000">密码:</font><input type="password" id="password" name="password" value=""></td>
</tr>
<tr>
<td><input type="submit" name="submit" class="btn" value="登录" /></td>
</tr>
</table>
</form>
<script type="text/javascript">
function myfunction(){
var id=document.getElementById("id").value;
var pass=document.getElementById("password").value;
if(id==''||id==null){
alert("用户名不能为空");
return false;
}
var pstespd=/^\d{8,11}$/;
if (!pstespd.exec(id)){
confirm("账号格式错误,只能输入8-11个数字做为账号。 ");
return false;
}
if(pass==''||pass==null){
alert("密码不能为空");
return false;
}
}
</script>
注册功能主要代码
Dao层
UserDao.java(接口)
//注册
public void addUser(User user);
UserDao.xml
<!-- 注册 -->
<insert id="addUser" parameterType="User">
insert into t_user(id,name,personalized,sex,password,emil)values(#{id},#{name},#{personalized},#{sex},#{password},#{emil})
</insert>
Service层
Service.java(接口)
//注册
public void regist(User user);
ServiceImpl(实现Service接口)
//注册
@Override
public void regist(User user) {
// TODO Auto-generated method stub
userDao.addUser(user);
}
Controller控制器
//注册
@RequestMapping("/regist.action")
public void regist(User user,HttpServletRequest request,HttpServletResponse response,HttpSession session) throws IOException, ServletException {
try{
userService.regist(user);
request.getRequestDispatcher("lo.action").forward(request, response);//跳转登录页
}catch(Exception m){
m.printStackTrace();
response.getWriter().print("<script> alert('输入的邮箱有误,找不到此邮箱!!!');location.href='re.action' </script>");//跳转注册页
}
}
前端代码
<form action="${pageContext.request.contextPath}/regist.action" onSubmit="return chek()">
<table>
<tr>
<td><font style="color: #000">账号:<font color="red">*</font></font></font><input class="input" type="text" id="id" name="id" value=""></td>
</tr>
<tr>
<td>
<font style="color: #000">密码:<font color="red">*</font></font>
<input class="input" type="password" id="password" name="password" value=""></td>
<td>
<font style="color: #000">确认密码:<font color="red">*</font></font>
<input class="input" type="password" id="password1" name="password1" value="">
</td>
</tr>
<tr>
<td><input class="btn" type="submit" value="注册"></td>
</tr>
</table>
<script type="text/javascript">
function chek(){
var id=document.getElementById("id").value;
var password=document.getElementById("password").value;
var password1=document.getElementById("password1").value;
if(id==""||id==null){
confirm("账号不能为空");
return false;
}
var pstespd=/^\d{8,11}$/;
if (!pstespd.exec(id)){
confirm("账号格式错误,只能输入8-11个数字做为账号。 ");
return false;
}
if(password==""||password==null){
confirm("密码不能为空");
return false;
}
if(password1==""||password1==null){
confirm("请输入确认密码!!!");
return false;
}
if(password!=password1){
confirm("两次输入的密码不一致,请重新输入!!!");
return false;
}
var patrn=/^(\w){8,20}$/;
if (!patrn.exec(password)){
confirm("密码格式错误,只能输入8-20个字母、数字、下划线 ");
return false;
}else{
return true;
}
登录拦截器
拦截器需要在springmvc-config.xml文件中配置拦截器,具体如下所示:
<mvc:interceptor>
<!-- 配置拦截器作用路径 -->
<mvc:mapping path="/**" />
<!-- 配置不需要拦截器作用的路径 -->
<mvc:exclude-mapping path=" " />
<bean class="com.***.interceptor.LoginInterceptor" />
</mvc:interceptor>
LoginInterceptor.java(需要实现HandlerInterceptor接口,并重写其中的方法)例如:
package com.Onforum.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.Onforum.po.Root;
public class LoginInterceptor implements HandlerInterceptor {
//视图渲染结束后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception modelAndView)
throws Exception {
// TODO Auto-generated method stub
}
//控制器之后,且视图解析之前执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
// TODO Auto-generated method stub
}
//控制器方法前执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// TODO Auto-generated method stub
System.out.println("拦截OK!!!");
HttpSession session = request.getSession();
User user= (User)session.getAttribute("id");//获取session中的id的值。
if(user!= null) {
return true;
}
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
return false;
}
}