Java进阶知识31 SpringMVC+JDBC+Oracle 注解版整合实例
本文知识点(目录):
1、本文整合实例最终效果图展示
2、导读
2.1、开发技术概述
2.2、本项目使用的jar包、项目结构图
3、本文所有代码(注解版)
3.1、Oracle 数据库建表脚本
3.2、web.xml 配置文件
3.3、odb.properties 配置文件
3.4、JDBC 封装工具类
3.5、User 实体类
3.6、dao 层
3.7、service 层
3.8、controller 控制层/器
3.9、SpringMVC核心配置文件
3.10、前端页面
1、本文整合实例最终效果图展示
2、导读
a.本文使用的是Spring+JDBC框架,Oracle 11g,tomcat-7.0.96,JDK-1.8,MyEclipse10.6,采用了“注解版”的方式开发的;
b.本文只实现了用户登录(含账号查询)、新增用户(用户注册)、查询所有用户信息、根据id查询;
c.本项目所采用的编码格式都是 UTF-8;
d.解决了向Oracle数据库中插入含有日期的字段,报错:“ORA-00917: 缺少逗号”;可看本文 UserDao 实现类的add()方法的代码;
e.解决了web.xml配置文件中的编码过滤器,不能过滤get请求的问题;可看本文 UserAction 控制类的register()方法的代码;
f.SpringMVC的核心配置文件,本整合实例都是放在src目录下。
3、本文所有代码(注解版)
3.1、Oracle 数据库建表脚本(oracle.sql)
1 -- 创建数据表 user1 2 create table user1( 3 id number(6) primary key, 4 name varchar2(20), 5 sex smallint, -- 短整型interger;或者设置成number(1)也行 6 birthday date, -- date:日期 ,如:2020-2-29; datetime:日期+时间,如:2020-2-29 15:10:35 7 account varchar2(20), 8 password varchar2(32), 9 email varchar2(20), 10 telphone varchar2(20) 11 ); 12 13 -- 创建序列 user1_seq 14 create sequence user1_seq 15 minvalue 1 -- 最小值 16 maxvalue 9999 -- 最大值 17 start with 1 -- 从1开始计数 18 increment by 1 -- 每次加1 19 nocycle -- 一直累加,不循环;cycle:达到最大值后,将从头开始累加 20 nocache; -- 不建缓冲区。
注意:此处我只是创建了一个序列user1_seq,并没有创建触发器,故:插入数据时,要带上id;对应值user1_seq.nextval
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="3.0" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 7 <display-name></display-name> 8 <welcome-file-list> 9 <welcome-file>index.jsp</welcome-file> 10 </welcome-file-list> 11 12 <!-- springmvc核心控制器 begin --> 13 <servlet> 14 <servlet-name>DispatcherServlet</servlet-name> 15 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 16 <init-param> 17 <param-name>contextConfigLocation</param-name> 18 <param-value>classpath:conf/springmvc.xml</param-value> 19 <!-- classpath: 等价于WEB-INF/classes/ --> 20 </init-param> 21 </servlet> 22 <servlet-mapping> 23 <servlet-name>DispatcherServlet</servlet-name> 24 <url-pattern>*.action</url-pattern> 25 </servlet-mapping> 26 <!-- springmvc核心控制器 end --> 27 28 <!-- 编码过滤器 begin --> 29 <!-- 经过测试,这个编码过滤器,只能过滤post请求,get请求 还是出现乱码;本文UserAction类的register()方法中,有解决方法 --> 30 <filter> 31 <filter-name>CharacterEncodingFilter</filter-name> 32 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 33 <init-param> 34 <param-name>encoding</param-name> 35 <param-value>UTF-8</param-value> 36 </init-param> 37 </filter> 38 <filter-mapping> 39 <filter-name>CharacterEncodingFilter</filter-name> 40 <url-pattern>/*</url-pattern> 41 </filter-mapping> 42 <!-- 编码过滤器 end --> 43 </web-app>
1 jdbcDriver=oracle.jdbc.driver.OracleDriver 2 url=jdbc:oracle:thin:@localhost:1521:shoreid 3 userName=zhangsan 4 password=123456
1 package com.shore.utils; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.sql.Connection; 6 import java.sql.DriverManager; 7 import java.sql.PreparedStatement; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.sql.Statement; 11 import java.util.Properties; 12 13 /** 14 * @author DSHORE/2020-2-29 15 * 连接数据库--->工具类:JDBC 16 */ 17 public class DBUtils { 18 19 private DBUtils() { 20 } 21 22 private static String jdbcDriver = ""; 23 private static String url = ""; 24 private static String userName = ""; 25 private static String password = ""; 26 27 static { 28 Properties properties = new Properties(); 29 try { 30 //读取配置文件(Oracle数据库) 31 InputStream inputStream = DBUtils.class.getResourceAsStream("/odb.properties"); 32 properties.load(inputStream); //加载配置文件 33 inputStream.close();//关闭输入流 34 35 //获取到对应参数的值 36 jdbcDriver = properties.getProperty("jdbcDriver"); 37 url = properties.getProperty("url"); 38 userName = properties.getProperty("userName"); 39 password = properties.getProperty("password"); 40 } catch (IOException e1) { 41 e1.printStackTrace(); 42 } finally { 43 try { 44 Class.forName(jdbcDriver); 45 } catch (ClassNotFoundException e) { 46 throw new ExceptionInInitializerError(e); 47 } 48 } 49 } 50 51 //连接数据库 52 public static Connection getConnection() throws SQLException { 53 Connection connection = null; 54 try { 55 connection = DriverManager.getConnection(url, userName, password); 56 } catch (Exception e) { 57 System.out.println(e.getMessage());//如果出现异常,则 把异常信息打印到控台上 58 } 59 return connection; 60 } 61 62 // 释放资源。 顺序:resultSet、statement、connection 63 public static void close(ResultSet resultSet, Statement statement, Connection connection) { 64 if (resultSet != null) { 65 try { 66 resultSet.close(); 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } finally { 70 if (statement != null) { 71 try { 72 statement.close(); 73 } catch (SQLException e) { 74 e.printStackTrace(); 75 } finally { 76 if (connection != null) { 77 try { 78 connection.close(); 79 } catch (SQLException e) { 80 e.printStackTrace(); 81 } 82 } 83 } 84 } 85 } 86 } 87 } 88 89 // 释放资源。 顺序:resultSet、preparedStatement、connection 90 public static void close(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) { 91 if (resultSet != null) { 92 try { 93 resultSet.close(); 94 } catch (SQLException e) { 95 e.printStackTrace(); 96 } finally { 97 if (preparedStatement != null) { 98 try { 99 preparedStatement.close(); 100 } catch (SQLException e) { 101 e.printStackTrace(); 102 } finally { 103 if (connection != null) { 104 try { 105 connection.close(); 106 } catch (SQLException e) { 107 e.printStackTrace(); 108 } 109 } 110 } 111 } 112 } 113 } 114 } 115 }
1 package com.shore.entity; 2 3 import java.util.Date; 4 5 /** 6 * @author DSHORE/2020-2-29 7 * 8 */ 9 public class User { 10 private Integer id; 11 private String name; 12 private Integer sex; 13 private Date birthday; 14 private String account; 15 private String password; 16 private String email; 17 private String telphone; 18 19 public Integer getId() { 20 return id; 21 } 22 23 public void setId(Integer id) { 24 this.id = id; 25 } 26 27 public String getName() { 28 return name; 29 } 30 31 public void setName(String name) { 32 this.name = name; 33 } 34 35 public Integer getSex() { 36 return sex; 37 } 38 39 public void setSex(Integer sex) { 40 this.sex = sex; 41 } 42 43 public Date getBirthday() { 44 return birthday; 45 } 46 47 public void setBirthday(Date birthday) { 48 this.birthday = birthday; 49 } 50 51 public String getAccount() { 52 return account; 53 } 54 55 public void setAccount(String account) { 56 this.account = account; 57 } 58 59 public String getPassword() { 60 return password; 61 } 62 63 public void setPassword(String password) { 64 this.password = password; 65 } 66 67 public String getEmail() { 68 return email; 69 } 70 71 public void setEmail(String email) { 72 this.email = email; 73 } 74 75 public String getTelphone() { 76 return telphone; 77 } 78 79 public void setTelphone(String telphone) { 80 this.telphone = telphone; 81 } 82 }
接口 IUserDao
1 package com.shore.dao; 2 3 import java.util.List; 4 5 import com.shore.entity.User; 6 7 /** 8 * @author DSHORE/2020-2-29 9 * 10 */ 11 public interface IUserDao { 12 13 public void add(User user); //新增 14 15 public List<User> listAll(); //查询所有 16 17 public User findByAccount(String account); //根据账号查询 18 }
IUserDao 接口的实现类 UserDao
1 package com.shore.dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 import java.text.SimpleDateFormat; 9 import java.util.ArrayList; 10 import java.util.List; 11 12 import org.springframework.stereotype.Repository; 13 14 import com.shore.dao.IUserDao; 15 import com.shore.entity.User; 16 import com.shore.utils.DBUtils; 17 18 /** 19 * @author DSHORE/2020-2-29 20 * 21 */ 22 @Repository 23 public class UserDao implements IUserDao { 24 25 //全局变量 26 Connection connection = null; 27 Statement statement = null; 28 PreparedStatement preparedStatement = null; 29 ResultSet resultSet = null; 30 31 @Override //新增 32 public void add(User user) { 33 //日期转换成字符串 34 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 35 String birthday = sdf.format(user.getBirthday()); 36 try { 37 connection = DBUtils.getConnection(); 38 String sql = "insert into user1 values(user1_seq.nextval,'" 39 +user.getName()+"'," 40 +user.getSex()+",to_date('" 41 +birthday+"','yyyy-MM-dd'),'" 42 +user.getAccount()+"','" 43 +user.getPassword()+"','" 44 +user.getEmail()+"','" 45 +user.getTelphone()+"')"; 46 //此处也可以用PreparedStatement,sql改一下即可 47 statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 48 statement.executeUpdate(sql);//执行添加操作 49 } catch (Exception e) { 50 e.printStackTrace(); 51 } finally{ 52 DBUtils.close(null, statement, connection); 53 } 54 } 55 56 @Override //查询所有 57 public List<User> listAll() { 58 List<User> userList = new ArrayList<User>(); 59 String sql = ""; 60 try { 61 connection = DBUtils.getConnection(); 62 sql = "select * from user1 order by id"; 63 statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 64 resultSet = statement.executeQuery(sql); 65 while (resultSet.next()) { 66 User user = new User(); 67 user.setId(resultSet.getInt("id")); 68 user.setName(resultSet.getString("name")); 69 user.setSex(resultSet.getInt("sex")); 70 user.setBirthday(resultSet.getDate("birthday")); 71 user.setAccount(resultSet.getString("account")); 72 user.setPassword(resultSet.getString("password")); 73 user.setEmail(resultSet.getString("email")); 74 user.setTelphone(resultSet.getString("telphone")); 75 userList.add(user); 76 } 77 } catch (SQLException e) { 78 e.printStackTrace(); 79 }finally { 80 DBUtils.close(resultSet, statement, connection); 81 } 82 return userList; 83 } 84 85 @Override //根据账号查询 86 public User findByAccount(String account) { 87 String sql = null; 88 User user = null; 89 try { 90 connection = DBUtils.getConnection(); 91 sql = "select * from user1 where account=?"; 92 preparedStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 93 preparedStatement.setString(1, account); 94 resultSet = preparedStatement.executeQuery(); 95 if (resultSet.first()) { 96 user = new User(); 97 user.setId(resultSet.getInt("id")); 98 user.setName(resultSet.getString("name")); 99 user.setSex(resultSet.getInt("sex")); 100 user.setBirthday(resultSet.getDate("birthday")); 101 user.setAccount(resultSet.getString("account")); 102 user.setPassword(resultSet.getString("password")); 103 user.setEmail(resultSet.getString("email")); 104 user.setTelphone(resultSet.getString("telphone")); 105 } 106 }catch (Exception e) { 107 e.printStackTrace(); 108 }finally{ 109 DBUtils.close(resultSet, preparedStatement, connection); 110 } 111 return user; 112 } 113 }
IUserService 接口
1 package com.shore.service; 2 3 import java.util.List; 4 5 import com.shore.entity.User; 6 7 /** 8 * @author DSHORE/2020-2-29 9 * 10 */ 11 public interface IUserService { 12 13 public void add(User user); //新增 14 15 public List<User> listAll(); //查询所有 16 17 public User findByAccount(String account);//根据账号查询 18 }
IUserService 接口的实现类 UserService
1 package com.shore.service.impl; 2 3 import java.util.List; 4 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Service; 7 8 import com.shore.dao.IUserDao; 9 import com.shore.dao.impl.UserDao; 10 import com.shore.entity.User; 11 import com.shore.service.IUserService; 12 13 /** 14 * @author DSHORE/2020-2-29 15 * 16 */ 17 @Service 18 public class UserService implements IUserService { 19 20 @Autowired 21 private IUserDao userDao = new UserDao(); 22 23 @Override //新增 24 public void add(User user) { 25 userDao.add(user); 26 } 27 28 @Override //查询所有 29 public List<User> listAll() { 30 return userDao.listAll(); 31 } 32 33 @Override //根据账号查询 34 public User findByAccount(String account) { 35 return userDao.findByAccount(account); 36 } 37 }
3.8、controller 控制层/器(UserAction)
1 package com.shore.controller; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import java.util.List; 6 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.springframework.beans.propertyeditors.CustomDateEditor; 11 import org.springframework.stereotype.Controller; 12 import org.springframework.web.bind.ServletRequestDataBinder; 13 import org.springframework.web.bind.annotation.InitBinder; 14 import org.springframework.web.bind.annotation.RequestMapping; 15 import org.springframework.web.bind.annotation.RequestMethod; 16 17 import com.shore.entity.User; 18 import com.shore.service.IUserService; 19 import com.shore.service.impl.UserService; 20 21 /** 22 * @author DSHORE/2020-2-29 23 * 控制器:UserAction;有的人喜欢这样写:UserController 24 */ 25 @Controller 26 @RequestMapping(value="/user") 27 public class UserAction { 28 private IUserService userService = new UserService(); 29 30 @InitBinder //转换时间类型(自动) 31 protected void initBinder(HttpServletRequest request, 32 ServletRequestDataBinder binder) throws Exception { 33 binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); //true:允许输入空值,false:不能为空值 34 } 35 36 //用户登录 37 @RequestMapping(value="/login",method=RequestMethod.POST) 38 public void login(HttpServletRequest request,HttpServletResponse response) throws Exception{ 39 String account = request.getParameter("account").trim(); 40 String password = request.getParameter("password").trim(); 41 // 根据用户账号名称查询User对象 42 User dbUser = userService.findByAccount(account); 43 if (dbUser == null) { // 用户不存在 44 request.getSession().setAttribute("message", "账号不存在,请重新输入!"); 45 response.sendRedirect(request.getContextPath());//重定向到登录页面 46 } else if (!password.equals(dbUser.getPassword())) { 47 request.getSession().setAttribute("message", "密码错误,请重新输入!"); 48 response.sendRedirect(request.getContextPath()); 49 }else { 50 // 把该用户(数据库中查到的)保存到session中 51 request.getSession().setAttribute("currentUser", dbUser); 52 //重定向到本UserAction类的listAll方法 53 response.sendRedirect(request.getContextPath()+"/user/listAll.action"); 54 } 55 } 56 57 //查询所有用户详细信息 58 @RequestMapping(value="/listAll",method=RequestMethod.GET) 59 public String listAll(HttpServletRequest request) throws Exception { 60 List<User> users = userService.listAll(); 61 request.setAttribute("users", users); 62 request.getSession().removeAttribute("message");//登录成功后,移除session中的message提示信息 63 return "user-list";//跳转到user-list.jsp页面 64 } 65 66 //注册账号(新增用户) 67 @RequestMapping(value="/register",method=RequestMethod.GET) 68 public void register(User user,HttpServletRequest request, 69 HttpServletResponse response) throws Exception{ 70 //get方式,防止乱码 71 String userName = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8"); 72 user.setName(userName); 73 //调用service进行注册(保存) 74 userService.add(user); 75 //重定向到本UserAction类的listAll方法 76 response.sendRedirect(request.getContextPath()+"/user/listAll.action"); 77 } 78 }
3.9、SpringMVC核心配置文件(springmvc.xml)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:mvc="http://www.springframework.org/schema/mvc" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xmlns:context="http://www.springframework.org/schema/context" 8 xsi:schemaLocation=" 9 http://www.springframework.org/schema/beans 10 http://www.springframework.org/schema/beans/spring-beans.xsd 11 http://www.springframework.org/schema/mvc 12 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 13 http://www.springframework.org/schema/context 14 http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 15 16 <!-- 1、映射器(可选:可写,可不写,如果一条连接有多个入口,则需要配置) --> 17 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean> 18 19 <!-- 2、适配器(可选) --> 20 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean> 21 22 <!-- 3、控制器 --> 23 <context:component-scan base-package="com.shore.controller"/> 24 25 <!-- 4、视图解析器(可选,如果写了视图逻辑名,就必须要配置,下面配置了两个property) --> 26 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 27 <property name="prefix" value="/jsp/user/"></property> 28 <property name="suffix" value=".jsp"></property> 29 </bean> 30 </beans>
index.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'index.jsp' starting page</title> 13 <meta http-equiv="pragma" content="no-cache"> 14 <meta http-equiv="cache-control" content="no-cache"> 15 <meta http-equiv="expires" content="0"> 16 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 17 <meta http-equiv="description" content="This is my page"> 18 <!-- 19 <link rel="stylesheet" type="text/css" href="styles.css"> 20 --> 21 </head> 22 23 <body> 24 <jsp:forward page="jsp/user/login.jsp"></jsp:forward> 25 </body> 26 </html>
login.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'login.jsp' starting page</title> 13 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta http-equiv="cache-control" content="no-cache"> 16 <meta http-equiv="expires" content="0"> 17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 18 <meta http-equiv="description" content="This is my page"> 19 <!-- 20 <link rel="stylesheet" type="text/css" href="styles.css"> 21 --> 22 23 </head> 24 25 <style> 26 table tr th{ border:1px solid #C1C1C1; font-size: 16px;} 27 table,table tr td { border:1px solid #C1C1C1; } 28 table { width: 30%; min-height: 25px; line-height: 25px; border-collapse: collapse; padding:2px; margin:auto;} 29 a{text-decoration: none;font-weight: bold;} 30 </style> 31 32 <body> 33 <form name="form" action="user/login.action" method="post"> 34 <table style="align: center;"> 35 <tr> 36 <td style="text-align: center;">账号:</td> 37 <td> 38 <input type="text" name="account" /> 39 <span style="color: red">${message}</span> 40 </td> 41 </tr> 42 <tr> 43 <td style="text-align: center;">密码:</td> 44 <td><input type="password" name="password" /></td> 45 </tr> 46 </table> 47 <br/> 48 <div style="text-align: center;"> 49 <input type="submit" value="登录" /> 50 <input type="reset" value="重置" /> 51 </div> 52 </form> 53 </body> 54 </html>
user-list.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 4 <% 5 String path = request.getContextPath(); 6 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 7 %> 8 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10 <html> 11 <head> 12 <base href="<%=basePath%>"> 13 14 <title>用户列表</title> 15 16 <meta http-equiv="pragma" content="no-cache"> 17 <meta http-equiv="cache-control" content="no-cache"> 18 <meta http-equiv="expires" content="0"> 19 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 20 <meta http-equiv="description" content="This is my page"> 21 <!-- 22 <link rel="stylesheet" type="text/css" href="styles.css"> 23 --> 24 25 </head> 26 27 <script type="text/javascript"> 28 //全选、全反选 29 function doSelectAll() { 30 $("input[name='selectedRow']").prop("checked", $("#selAll").is(":checked")); 31 } 32 </script> 33 34 <style> 35 table tr th{ border:1px solid #C1C1C1; font-size: 16px;} 36 table,table tr td { border:1px solid #C1C1C1; } 37 table { width: 80%; min-height: 25px; line-height: 25px; border-collapse: collapse; padding:2px; margin:auto;text-align: center;} 38 a{text-decoration: none;font-weight: bold;} 39 </style> 40 41 <body> 42 <h3 align="center">用户信息列表</h3> 43 <table> 44 <tr style=" background-color: #EBEBEB"> 45 <th><input type="checkbox" id="selAll" onclick="doSelectAll()" /></th> 46 <th>序号</th> 47 <th>姓名</th> 48 <th>性别</th> 49 <th>生日</th> 50 <th>账号</th> 51 <th>邮箱</th> 52 <th>电话</th> 53 <th>操作</th> 54 </tr> 55 <c:forEach items="${users}" var="user" varStatus="st"> 56 <tr> 57 <td><input type="checkbox" name="selectedRow" value="<s:property value='id'/>"/></td> 58 <td>${st.count }</td> 59 <td>${user.name }</td> 60 <td> 61 <c:if test="${user.sex==1}">男</c:if> 62 <c:if test="${user.sex==0}">女</c:if> 63 </td> 64 <td>${user.birthday }</td> 65 <td>${user.account }</td> 66 <td>${user.email }</td> 67 <td>${user.telphone }</td> 68 <td> 69 <a href="user/listAll.action">编辑</a><!-- 此功能未实现,留空,简单演示SSH框架(xml版) --> 70 <a href="user/listAll.action">删除</a><!-- 此功能未实现,留空,简单演示SSH框架(xml版) --> 71 </td> 72 </tr> 73 </c:forEach> 74 </table> 75 <br/> 76 <div style="text-align: center;"> 77 <a href="jsp/user/user-add.jsp">新增用户</a> 78 <a href="user/listAll.action">批量删除</a><!-- 此功能未实现,留空,简单演示SSH框架(xml版) --> 79 </div> 80 </body> 81 </html>
user-add.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 <% 4 String path = request.getContextPath(); 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 6 %> 7 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9 <html> 10 <head> 11 <base href="<%=basePath%>"> 12 13 <title>新增用户</title> 14 15 <meta http-equiv="pragma" content="no-cache"> 16 <meta http-equiv="cache-control" content="no-cache"> 17 <meta http-equiv="expires" content="0"> 18 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 19 <meta http-equiv="description" content="This is my page"> 20 <!-- 21 <link rel="stylesheet" type="text/css" href="styles.css"> 22 --> 23 24 </head> 25 26 <style> 27 table tr th{ border:1px solid #C1C1C1; font-size: 16px;} 28 table,table tr td { border:1px solid #C1C1C1; } 29 th{background-color: #EBEBEB; text-align: center;} 30 table { width: 50%; min-height: 25px; line-height: 25px; border-collapse: collapse; padding:2px; margin:auto;} 31 a{text-decoration: none;font-weight: bold;} 32 </style> 33 34 <body> 35 <form action="<%=basePath%>user/register.action" method="get"> 36 <h3 align="center">新增用户</h3> 37 <table> 38 <tr> 39 <th>姓名</th> 40 <td><input name="name" value="" style="width:45%;"/></td> 41 </tr> 42 <tr> 43 <th>性别</th> 44 <td> 45 <input type="radio" name="sex" value="1" checked="checked"/>男 46 <input type="radio" name="sex" value="0"/>女 47 </td> 48 </tr> 49 <tr> 50 <th>生日</th><!-- 此处,可加个日期控件,单击选择日期(省略不做);这里我用手写输入的形式:yyyy-MM-dd --> 51 <td><input type="text" name="birthday" value="" style="width:45%;"/></td> 52 </tr> 53 <tr> 54 <th>账号</th> 55 <td><input name="account" value="" style="width:45%;"/></td> 56 </tr> 57 <tr> 58 <th>密码</th> 59 <td><input name="password" style="width:45%;"/></td> 60 </tr> 61 <tr> 62 <th>电话</th> 63 <td><input id="telphone" name="telphone" value="" onkeyup="value=value.replace(/[^\d]/g,'')" style="width:45%;"/></td> 64 </tr> 65 <tr> 66 <th>邮箱</th> 67 <td><input id="email" name="email" value="" style="width:45%;"/></td> 68 </tr> 69 </table> 70 <br/> 71 <div style="text-align: center;"> 72 <input type="submit" value="保存" /> 73 <input type="reset" value="重置" /> 74 <input type="button" onclick="javascript:history.go(-1)" value="返回" /> 75 </div> 76 </form> 77 </body> 78 </html>
到此已完结!有任何问题,可留言。
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/12396023.html 版权声明:欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |