springMVC利用HandlerInterceptor实现简单登录注销功能及表单处理


声明:本文转载自https://my.oschina.net/u/2245781/blog/1595860,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

一、项目结构及依赖包

二、建库

-- phpMyAdmin SQL Dump -- version 4.6.4 -- https://www.phpmyadmin.net/ -- -- Host: localhost -- Generation Time: 2017-12-27 13:44:25 -- 服务器版本: 5.7.14 -- PHP Version: 5.6.26  SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00";   /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */;  -- -- Database: `test` --  -- --------------------------------------------------------  -- -- 表的结构 `t_user` --  CREATE TABLE `t_user` (   `userId` int(11) NOT NULL,   `userName` varchar(20) DEFAULT NULL,   `password` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  -- -- 转存表中的数据 `t_user` --  INSERT INTO `t_user` (`userId`, `userName`, `password`) VALUES (1, 'wxw1', '123'), (3, 'wxw3', '123'), (4, 'wxw4', '4444'), (8, 'wxw8', '1234'), (2, '王弈伟', '123');  -- -- Indexes for dumped tables --  -- -- Indexes for table `t_user` -- ALTER TABLE `t_user`   ADD PRIMARY KEY (`userId`),   ADD UNIQUE KEY `userName` (`userName`,`password`);  -- -- 在导出的表使用AUTO_INCREMENT --  -- -- 使用表AUTO_INCREMENT `t_user` -- ALTER TABLE `t_user`   MODIFY `userId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

三、DAO实现

只贴代码不做解释,不清楚的请移步Spring 的持久化实例Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解

实体pojo

package test.SpringMVC.model;  public class TUser { 	 	private long userId; 	private String userName; 	private String password; 	public long getUserId() { 		return userId; 	} 	public void setUserId(long userId) { 		this.userId = userId; 	} 	public String getUserName() { 		return userName; 	} 	public void setUserName(String userName) { 		this.userName = userName; 	} 	public String getPassword() { 		return password; 	} 	public void setPassword(String password) { 		this.password = password; 	} 	@Override 	public String toString() { 		return "TUser [userId=" + userId + ", userName=" + userName + ", password=" + password + "]"; 	}  }

接口

package test.SpringMVC.dao;  import java.util.List;  import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update;  import test.SpringMVC.model.TUser;  public interface ITUserDao {     @Select("select * from t_user") 	public List<TUser> listAll();     @Select("select * from t_user where userId=#{userId}") 	public TUser getById(long userId);     @Insert("insert into t_user(userId,userName,password) values(#{userId}, #{userName}, #{password})") 	public int insert(TUser u);     @Update("update t_user set userName=#{userName},password=#{password} where userId=#{userId}") 	public int update(TUser u); 	@Delete("delete from t_user where userId=#{userId}") 	public int deleteById(long userId);     @Select("delete from t_user")     public void delAllUser();     @Select("select * from t_user  where userName=#{userName} and password=#{password}") 	public TUser CheckLoginAndPwd(@Param("userName") String userName,@Param("password") String password);  }

接口实现:

package test.SpringMVC.daoimpl;  import java.util.List;  import org.mybatis.spring.support.SqlSessionDaoSupport;  import test.SpringMVC.dao.ITUserDao; import test.SpringMVC.model.TUser;  public class TUserDaoImpl extends SqlSessionDaoSupport implements ITUserDao {  	@Override 	public List<TUser> listAll() { 		// TODO 自动生成的方法存根 		return this.getSqlSession().getMapper(ITUserDao.class).listAll(); 	}  	@Override 	public TUser getById(long userId) { 		// TODO 自动生成的方法存根 		return this.getSqlSession().getMapper(ITUserDao.class).getById(userId); 	}  	@Override 	public int insert(TUser u) { 		// TODO 自动生成的方法存根 		return this.getSqlSession().getMapper(ITUserDao.class).insert(u); 	}  	@Override 	public int update(TUser u) { 		// TODO 自动生成的方法存根 		return this.getSqlSession().getMapper(ITUserDao.class).update(u); 	}  	@Override 	public int deleteById(long userId) { 		// TODO 自动生成的方法存根 		return this.getSqlSession().getMapper(ITUserDao.class).deleteById(userId); 	}  	@Override 	public TUser CheckLoginAndPwd(String userName, String password) { 		// TODO 自动生成的方法存根 		return this.getSqlSession().getMapper(ITUserDao.class).CheckLoginAndPwd(userName, password); 	}  	@Override 	public void delAllUser() { 		// TODO 自动生成的方法存根 		this.getSqlSession().getMapper(ITUserDao.class).delAllUser(); 	}  } 

四、配置文件

web.xml配置了首页index.jsp,其它的请求都被spring拦截

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 	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"> 	<display-name>spring mvc</display-name> 	<welcome-file-list> 		<welcome-file>index.jsp</welcome-file> 	</welcome-file-list>   	<!--configure the setting of springmvcDispatcherServlet and configure the  		mapping --> 	<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:springmvc-servlet.xml</param-value> 		</init-param> 		<!-- <load-on-startup>1</load-on-startup> --> 	</servlet>  	<servlet-mapping> 		<servlet-name>springmvc</servlet-name> 		<url-pattern>/</url-pattern> 	</servlet-mapping>  </web-app>  

springmvc-servlet.xml配置了数据源、mybatis配置文件路径、静态资源放行,需要说明的是拦截器Myinterceptor实现了HandlerInterceptor接口,其中postHandle对未处于登录状态的请求进行拦截,强制跳转到登录页面user/Login.jsp,后面给出代码。

<?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:mvc="http://www.springframework.org/schema/mvc"     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">                           <!-- scan the package and the sub package -->     <context:component-scan base-package="test.SpringMVC"/>    	<!-- 解除servlet对静态资源文件访问的限制,使得静态资源先经过 --> <!-- 	<mvc:default-servlet-handler />  -->      <mvc:resources mapping="/js/**" location="/js/"/>      <mvc:resources mapping="/css/**" location="/css/"/>      <!-- if you use annotation you must configure following setting -->     <mvc:annotation-driven />          <!-- 拦截器 --> 	<mvc:interceptors> 		<mvc:interceptor> 			<mvc:mapping path="/**"/> 			<mvc:exclude-mapping path="/**/*.js"/> 			<mvc:exclude-mapping path="/**/*.css"/> 			<bean class="test.SpringMVC.controller.Myinterceptor"></bean> 		</mvc:interceptor> 	</mvc:interceptors> 	     <!-- configure the InternalResourceViewResolver -->     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"             id="internalResourceViewResolver">         <!-- 前缀 -->         <property name="prefix" value="/WEB-INF/jsp/" />         <!-- 后缀 -->         <property name="suffix" value=".jsp" />     </bean>          <bean id="dataSource1" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">             	<property name="driverClassName" value="com.mysql.jdbc.Driver" />            	<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false" />            	<property name="username" value="your-user" />            	<property name="password" value="your-passwd" />           </bean>     	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 		<property name="dataSource" ref="dataSource1" /> 		<property name="configLocation" 			value="classpath:test/SpringMVC/dao/mybatis-cfg.xml" /> 	</bean> 	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 		<constructor-arg ref="sqlSessionFactory" /> 	</bean> 		<bean id="TUserDao" class="test.SpringMVC.daoimpl.TUserDaoImpl"> 		<property name="sqlSessionTemplate" ref="sqlSession" /> 	</bean> 	 	 </beans>

mybatis配置mybatis-cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> 	<typeAliases> 		<typeAlias alias="TUser" type="test.SpringMVC.model.TUser" /> 	</typeAliases> 	<environments default="development"> 		<environment id="development"> 			<transactionManager type="JDBC" /> 			<dataSource type="POOLED"> 				<property name="driver" value="com.mysql.jdbc.Driver" /> 				<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false" /> 				<property name="username" value="your-user" /> 				<property name="password" value="your-passwd" /> 			</dataSource> 		</environment> 	</environments>  	<mappers>  		<!--接口的方式  注册接口-->        	<mapper class="test.SpringMVC.dao.ITUserDao"/>     </mappers>  	 </configuration>

五、控制器

package test.SpringMVC.controller;  import java.util.List;  import javax.servlet.http.HttpSession;  import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.ComponentScan; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView;  import test.SpringMVC.dao.ITUserDao; import test.SpringMVC.model.TUser;  @RestController @ComponentScan("test.SpringMVC.*") @RequestMapping("/user") public class UserController { 	@Autowired 	@Qualifier("TUserDao") ; 	private ITUserDao iservice;  	 	@RequestMapping(value="/checkLogin",produces = {"application/json;charset=UTF-8" })	  	public @ResponseBody TUser checkLogin(@RequestBody TUser user,Model model,HttpSession session){ 		TUser user1=iservice.CheckLoginAndPwd(user.getUserName(), user.getPassword()); 			session.setAttribute("user1", user1); 			return user1;	 	} 	 	@RequestMapping(value = "/ulist", method = RequestMethod.GET) 	public ModelAndView getUsers() { 		List<TUser> ulist = iservice.listAll(); 		ModelAndView modelAndView = new ModelAndView("user/userslist");// 转到/WEB-INF/jsp/user/userslist.jsp 		modelAndView.addObject("userslist", ulist); 		return modelAndView; 	} 	 	@RequestMapping(value="/register",method={RequestMethod.GET,RequestMethod.POST}) 	public ModelAndView register(@ModelAttribute TUser user,Model model){ 		ModelAndView modelAndView = new ModelAndView("user/regsuccess");// 转到/WEB-INF/jsp/user/regsuccess.jsp 		if(iservice.CheckLoginAndPwd(user.getUserName(), user.getPassword())!=null||iservice.getById(user.getUserId())!=null){ 			model.addAttribute("msg", "注册失败:id不能重复,用户名密码不能都一样!");// 失败也是转到user/regsuccess.jsp这个页面只是显示不一样信息 			return modelAndView; 		} 		model.addAttribute("msg", "注册成功"); 		iservice.insert(user); 		return modelAndView; 	}  	@RequestMapping("/LogOut") 	public ModelAndView LogOut(HttpSession session){ 		session.invalidate(); 		ModelAndView modelAndView = new ModelAndView("user/Login");// 转到/WEB-INF/jsp/user/Login.jsp 		return modelAndView; 	} 	@RequestMapping(value = "/saveUser",produces = "text/html;charset=UTF-8") 	public void saveUser(TUser u){ 		iservice.insert(u); 	} 	@RequestMapping("/delUser") 	public void delUser(int id){     	iservice.deleteById(id); 	}  	@RequestMapping("/updateUser") 	public void updateUser(TUser u){ 		iservice.update(u); 	} 	  	@RequestMapping("/userlist.json") 	public @ResponseBody List<TUser> getUserList() { 		return iservice.listAll(); 	} 	 	@RequestMapping("/toaddform")  	public ModelAndView toaddform() { 		ModelAndView modelAndView = new ModelAndView("user/userform");// 转到/WEB-INF/jsp/user/userform.jsp 		return modelAndView; 	} } 

使用@RestController注解等于使用@Controller和@ResponseBody两个注解,标识该类是Spring MVC controller处理器,并且把返回结果直接写入HTTP response body中。所以返回String没有被解析为跳转路径,而是直接把字符串的内容显示到页面上。如返回String需要跳转则用@Controller注解。

六、拦截器Myinterceptor

package test.SpringMVC.controller;  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 test.SpringMVC.model.TUser;  public class Myinterceptor implements HandlerInterceptor {  	@Override 	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) 			throws Exception { 		// TODO 自动生成的方法存根 	}  	@Override 	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) 			throws Exception { 		// TODO 自动生成的方法存根 	}  	@Override 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object hander) throws Exception { 		// TODO 自动生成的方法存根 		String url=request.getRequestURI(); 		if(url.indexOf("/checkLogin.action")>=0){ 			return true; 		} 		if(url.indexOf("/register.action")>=0) 		{ 			return true; 		} 		HttpSession session=request.getSession(); 		TUser user=(TUser)session.getAttribute("user1"); 		if(user!=null){ 			return true; 		} 		request.getRequestDispatcher("/WEB-INF/jsp/user/Login.jsp").forward(request, response); 		return false; 	}  } 

七、页面代码:

首页index.jsp:一个菜单列表,以及用bootstrap实现了右上角登录标志,登录状态就显示用户名,点击注销会通过/LogOut RequestMapping转到Login.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"> <link rel="stylesheet" href="css/bootstrap.min.css" /> <script type="text/javascript" src="js/bootstrap.min.js"></script> <title>Insert title here</title> </head> <body> <!-- 标题 -->     	<div class="row">     		<div class="col-md-7">     			<h1>菜单列表</h1>     		</div>     		<div class="col-md-offset-10">     			<h4>欢迎您:<span class="glyphicon glyphicon-user"></span>     			      <strong>${user1.userName}</strong>     			      <small><a href="${pageContext.request.contextPath }/user/LogOut.action">注销</a></small></h4>     		</div>     	</div>    	 	<ul> 		<li><a href="user/ulist.do">t_user数据库页面</a></li> 		<li><a href="user/toaddform.do">注册新t_user</a></li> 	</ul> </body> </html>

user/Login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% 	String path = request.getContextPath(); 	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 			+ path + "/"; %>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>">  <title>My JSP 'Login.jsp' starting page</title>  <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" href="css/bootstrap.min.css" /> <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css" /> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript" 	src="js/bootstrap-datetimepicker.zh-CN.js"></script> </head> <style> </style> <script type="text/javascript"> 	$("#myModal").modal({ 		keyboard : false, 		backdrop : false 	}); 	$(function() {  		$("#lo") 				.click( 						function() { 							$ 									.ajax({ 										type : 'post', 										url : '${pageContext.request.contextPath}/user/checkLogin.action', 										contentType : 'application/json;charset=utf-8', 										data : JSON.stringify({ 											"userName" : $("#loginusername") 													.val(), 											"password" : $("#loginpassword") 													.val() 										}), 										success : function(data) { 											if (data == "" || data == null) { 												$("#message").html("用户名或密码错误"); 											} else {  												window.location.href = "${pageContext.request.contextPath}/index.jsp"; //登录成功后转主页面 											} 										} 									}); 						}); 	}); </script> <style> #login { 	width: 450px; 	height: 100px; 	margin: 50px auto; } </style> <body> 	<div class="container"> 		<div id="login"> 			<form class="form-horizontal" role="form"> 				<div class="form-group"> 					<label for="inputEmail3" class="col-sm-2 control-label">用户名</label> 					<div class="col-sm-10"> 						<input type="text" class="form-control" id="loginusername" 							name="userName" placeholder="请输入您的用户名" required autofocus> 					</div> 				</div> 				<div class="form-group"> 					<label for="inputPassword3" class="col-sm-2 control-label">密码</label> 					<div class="col-sm-10"> 						<input type="password" class="form-control" id="loginpassword" 							name="password" placeholder="请输入您的密码" required> <label 							class="control-label" for="inputSuccess1" style="color: red;" 							id="message"></label> 					</div> 				</div> 				<div class="form-group"> 					<div class="col-sm-offset-2 col-sm-10"> 						<button type="button" class="btn btn-info" id="lo">登陆</button> 						<button type="button" class="btn btn-danger" data-toggle="modal" 							data-target="#myModal">点击注册新用户</button> 					</div> 				</div> 			</form> 			<!-- 注册模态框 --> 			<div class="modal fade" id="myModal" tabindex="-1" role="dialog" 				aria-labelledby="myModalLabel" aria-hidden="true"> 				<div class="modal-dialog"> 					<div class="modal-content"> 						<div class="modal-header"> 							<button type="button" class="close" data-dismiss="modal"> 								<span aria-hidden="true">&times;</span><span class="sr-only">Close</span> 							</button> 							<h4 class="modal-title" id="myModalLabel">用户注册</h4> 						</div> 						<form class="form-horizontal" role="form" 							action="${pageContext.request.contextPath}/user/register.action" 							method="post" id="form"> 							<div class="modal-body"> 								<!-- 表单 --> 								<div class="form-group"> 									<label for="inputEmail3" class="col-sm-3 control-label">用户名</label> 									<div class="col-sm-6"> 										<input type="text" class="form-control" id="userName" 											name="userName" placeholder="请输入您的用户名" required autofocus> 									</div> 								</div> 								<div class="form-group"> 									<label for="inputPassword3" class="col-sm-3 control-label">密码</label> 									<div class="col-sm-6"> 										<input type="password" class="form-control" id="password" 											name="password" placeholder="请输入您的密码" required autofocus> 									</div> 								</div> 							</div> 							<div class="modal-footer"> 								<button type="button" class="btn btn-default" 									data-dismiss="modal">关闭</button> 								<button type="submit" class="btn btn-primary" id="save">注册</button> 							</div> 						</form> 					</div> 				</div> 			</div> 		</div> 	</div> </body> </html> 

user/userform.jsp springmvc表单处理的例子用于注册新用户

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Spring MVC表单处理</title> </head> <body> <h2>User Information</h2>    <form action="${pageContext.request.contextPath}/user/register" method="post">          编号:<input type="text" name="userId"/>          用户名:<input type="text" name="userName"/>          密码:<input type="text" name="password"/>        <input type="submit" value="提交"/>      </form>  </body> </html>

注册后转到regsuccess.jsp显示信息

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>   <head>     <base href="<%=basePath%>">          <title>My JSP 'success.jsp' starting page</title>      	<meta http-equiv="pragma" content="no-cache"> 	<meta http-equiv="cache-control" content="no-cache"> 	<meta http-equiv="expires" content="0">     	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 	<meta http-equiv="description" content="This is my page">   </head>      <body>   	<h1>${msg }</h1>   </body> </html> 

userslist.jsp用于显示t_user表的内容

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" 	pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <title>JSP显示用户</title> </head> <body>     <table border="1">     	<tr> 			<th>编号</th> 			<th>名字</th> 			<th>密码</th> 		</tr> 		<c:forEach items="${userslist}" var="users"> 			<tr> 				<td>${users.userId}</td> 				<td>${users.userName}</td> 				<td>${users.password}</td> 			</tr> 		</c:forEach> 	</table> </body> </html>

八、运行截图:

未登录时点击菜单的条目都会转到登录页面

登录后会转到首页,再点击t_user数据库页面就会显示t_user表的内容

新增用户表单页面

项目代码下载

本文发表于2017年12月28日 12:32
(c)注:本文转载自https://my.oschina.net/u/2245781/blog/1595860,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2072 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1