java:jdbc+servlet+jsp+mysql
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java:jdbc+servlet+jsp+mysql,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含20473字,纯文字阅读大概需要30分钟。
内容图文
先在mysql新增数据库和表先,把下面的几句代码复制去到mysql运行就可以创建成功了!
创建数据库
create database jdbc01 character set utf8 collate utf8_general_ci;
创建表:
use jdbc01;
create table users(
id int primary key,
name varchar(40),
password varchar(40),
email varchar(60),
birthday date,
sex boolean
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
运行的效果:
一、创建MVC架构的Web项目
与mysql 需要的包是
项目所需要的包 |
|||
序号 |
包名 |
描述 |
所属层次 |
1 |
zhu.jdbc.domain |
相当于数据库的某张表 (只包含简单的属性以及属性对应的get和set方法,不包含具体的业务处理方法),提供给【数据访问层】、【业务处理层】、【Web层】来使用 |
domain(域模型)层 |
2 |
zhu.jdbc.dao |
存放访问数据库的操作接口类 |
数据访问层 |
3 |
zhu.jdbc.dao.imp |
存放访问数据库的操作接口的实现类 |
|
4 |
zhu.jdbc.service |
存放处理系统业务接口类 |
业务处理层 |
5 |
zhu.jdbc.service.imp |
存放处理系统业务接口的实现类 |
|
6 |
zhu.jdbc.command |
相当于数据库命令的 增删查改 |
相当于三层架构的(DB层) |
7 |
zhu.jdbc.unit |
存放系统的通用工具类,提供给【数据访问层】、【业务处理层】、【DB层】来使用 |
|
8 |
zhu.jdbc.servlet |
|
Web层(相当于界面层) |
创建好的项目如下图(图-1)所示:
图-1
二、代码的编写
1. zhu.jdbc.unit的包编写
在zhu.jdbc.unit包下创建一个UnitMysql的类(这个类是建立与mysql的链接)
UnitMysql代码如下:
1 package zhu.jdbc.unit; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 9 public class UnitMysql { 10 public static final String URL="jdbc:mysql://localhost:3306/jdbc01";//链接的mysql11publicstaticfinal String NAME = "root"; 12publicstaticfinal String PASSWORD = "root"; 13publicstaticfinal String DREIVER = "com.mysql.jdbc.Driver"; 141516static { 17try { 18//加载驱动器 19 Class.forName(DREIVER); 2021/*//另一种方法,但是会加载驱动二次,通常不是该方法 22 try { 23 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 24 } catch (SQLException e) { 25 e.printStackTrace(); 26 }*/27 } catch (ClassNotFoundException e) { 28 e.printStackTrace(); 29 } 30 } 3132publicstatic Connection getConnection() { 33try { 34return DriverManager.getConnection(URL, NAME, PASSWORD);//创建与数据库的链接35 } catch (SQLException e) { 36 e.printStackTrace(); 37 } 38returnnull; 39 } 40//设置一个公共的关闭链接、释放资源的方法 . 因为每次只要进行了增,删,查,改 之后 都必须要 事件, 那么就设置一个公共的方法 41//而关闭资源要从 ResultSet先关闭-->,再到 PreparedStatement-->,最后到 Connection关闭42publicstaticvoid Close(ResultSet rs, PreparedStatement ps, Connection conn) { 43if (rs != null) { 44try { 45 rs.close(); 46 } catch (SQLException e) { 47 e.printStackTrace(); 48 } 49 } 5051if (ps != null) { 52try { 53 ps.close(); 54 } catch (SQLException e) { 55 e.printStackTrace(); 56 } 57 } 5859if (conn != null) { 60try { 61 conn.close(); 62 } catch (SQLException e) { 63 e.printStackTrace(); 64 } 65 } 66 } 67 }
2. 相当于三层架构的(DB层)
在zhu.jdbc.command包下创建一个IDaoCommand的类(这个类是建立与mysql的链接)
IDaoCommand代码如下:
1 package zhu.jdbc.command; 2 3 import java.util.List; 4 5 public interface IDaoCommand<T> { 6//查询所有的数据 7public List<T> queryAllData(); 8//新增数据 9publicint insertData(T t); 10//修改数据11publicint update(T t); 12//删除数据13publicint delete(int id); 14//查询一条数据通过ID15public T queryDataById(int id); 16 }
3. domain(域模型)层
在zhu.jdbc.domain 包下创建一个Tb_User 类
Tb_User 代码如下:
1 package zhu.jdbc.domain; 2 3 import java.sql.Date; 4 // 这里相当于数据库的某张表 5 public class Tb_User { 6 private int id; 7 private String name; 8 private String password; 9 private String email; 10 private Date birthday; 11 private boolean sex; 12 13 public boolean isSex() { 14 return sex; 15 } 16 public void setSex(boolean sex) { 17this.sex = sex; 18 } 19publicint getId() { 20return id; 21 } 22publicvoid setId(int id) { 23this.id = id; 24 } 25public String getName() { 26return name; 27 } 28publicvoid setName(String name) { 29this.name = name; 30 } 31public String getPassword() { 32return password; 33 } 34publicvoid setPassword(String password) { 35this.password = password; 36 } 37public String getEmail() { 38return email; 39 } 40publicvoid setEmail(String email) { 41this.email = email; 42 } 43public Date getBirthday() { 44return birthday; 45 } 46publicvoid setBirthday(Date birthday) { 47this.birthday = birthday; 48 } 49 }
4.开发数据访问层(dao、dao.impl)
2.1: dao 继承 command的命令
在zhu.jdbc.dao包下创建一个ITb_User接口类,对于开发接口类,我习惯以字母I作类的前缀.
ITb_User代码如下:
1 package zhu.jdbc.dao; 2 3 import zhu.jdbc.command.IDaoCommand; 4 import zhu.jdbc.domain.Tb_User; 5 6 /** 7 * 这里这个类 是为了 ,后续 添加自己需要的方法. 如:模糊查询, 分页查询.... 8 * 这个必须要继承ICommand类,那样就可以调用增删查改的方法了 9 * @author Xiao_Zhu 10 * 11 */ 12 public interface ITb_User extends IDaoCommand<Tb_User> { 13//自己需要的方法14 }
2.2: dao.ImpI 实现 dao
在zhu.jdbc.dao.imp包下创建一个ITb_UserImpI类
ITb_UserImpI代码如下:
1 package zhu.jdbc.dao.imp; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 7 import java.sql.SQLException; 8 import java.util.ArrayList; 9 import java.util.List; 10 11 import zhu.jdbc.dao.ITb_User; 12 import zhu.jdbc.domain.Tb_User; 13 import zhu.jdbc.unit.UnitMysql; 14 15 /** 16 * 实现 ITb_User类 17 * 18 * @author Xiao_Zhu 19 * 20 */ 21 public class ITb_UserImpI implements ITb_User { 22public Connection conn1 = null; 23public ResultSet rs = null; 24public PreparedStatement ps = null; 25 26// 查询所有的数据 27 @Override 28public List<Tb_User> queryAllData() { 29 conn1 = UnitMysql.getConnection();// 链接数据库 30 List<Tb_User> list = new ArrayList<Tb_User>(); 31try { 32 String sqlSelect = "select * from users "; // 查询多条数据 33 ps = conn1.prepareStatement(sqlSelect); 34 rs = ps.executeQuery(); 35 Tb_User user = null; 36while (rs.next()) { 37 user = new Tb_User(); 38 user.setId(rs.getInt("id")); 39 user.setName(rs.getString("name")); 40 user.setPassword(rs.getString("password")); 41 user.setBirthday(rs.getDate("birthday")); 42 user.setSex(rs.getBoolean("sex")); 43 list.add(user); 44 } 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } finally { 48 UnitMysql.Close(rs, ps, conn1); 49 } 50return list; 51 } 52 53// 新增 54 @Override 55publicint insertData(Tb_User t) { 56 conn1 = UnitMysql.getConnection(); 57int i = 0; 58try { 59 String sqlInsert = "insert into users(name,password,email,birthday,sex) values(?,?,?,?,?) ;"; 60 ps = conn1.prepareStatement(sqlInsert, 61 PreparedStatement.RETURN_GENERATED_KEYS); 62// 这里的1,2..必须要按上面的新增的顺序来定义 63 ps.setString(1, t.getName()); 64 ps.setString(2, t.getPassword()); 65 ps.setString(3, t.getEmail()); 66 ps.setDate(4, new java.sql.Date(t.getBirthday().getTime())); 67 ps.setBoolean(5, t.isSex()); 68 ps.executeUpdate(); 69 rs = ps.getGeneratedKeys();// 得到 最新的 ID 70if (rs.next()) {// 是否存在 71 i = rs.getInt(1); 72 } 73 } catch (SQLException e) { 74 e.printStackTrace(); 75 } finally { 76 UnitMysql.Close(rs, ps, conn1); 77 } 78return i; 79 } 80 81// 修改 82 @Override 83publicint update(Tb_User t) { 84 conn1 = UnitMysql.getConnection(); 85int i = 0; 86try { 87 String sqlUpdate = "update users set name=?, password =? ,sex=? where id=?"; 88 ps = conn1.prepareStatement(sqlUpdate); 89 ps.setString(1, t.getName()); 90 ps.setString(2, t.getPassword()); 91 ps.setBoolean(3, t.isSex()); 92 ps.setInt(4, t.getId()); 93 i = ps.executeUpdate(); 94 } catch (SQLException e) { 95 e.printStackTrace(); 96 } finally { 97 UnitMysql.Close(null, ps, conn1); 98 } 99return i; 100 } 101102// 删除103 @Override 104publicint delete(int id) { 105 conn1 = UnitMysql.getConnection(); 106int i = 0; 107try { 108 String sqlDelete = "delete from users where id=?"; 109 ps = conn1.prepareStatement(sqlDelete); 110 ps.setInt(1, id); 111 i = ps.executeUpdate(); 112if (i == 1) { 113return i; 114 } 115 } catch (SQLException e) { 116 e.printStackTrace(); 117 } finally { 118 UnitMysql.Close(null, ps, conn1); 119 } 120return i; 121 } 122123// 查询一条数据通过ID124 @Override 125public Tb_User queryDataById(int id) { 126 conn1 = UnitMysql.getConnection(); 127 String sql = "select * from users where id=?"; 128 Tb_User user = null; 129if (id > 0) { 130try { 131 ps = conn1.prepareStatement(sql); 132 ps.setInt(1, id); 133 rs = ps.executeQuery(); 134if (rs.next()) { 135 user = new Tb_User(); 136 user.setId(rs.getInt("id")); 137 user.setName(rs.getString("name")); 138 user.setPassword(rs.getString("password")); 139 user.setBirthday(rs.getDate("birthday")); 140 user.setSex(rs.getBoolean("sex")); 141142 } 143 } catch (SQLException e) { 144 e.printStackTrace(); 145 } finally { 146 UnitMysql.Close(null, ps, conn1); 147 } 148 } 149return user; 150 } 151152 }
5. 业务处理层(service,service.imp)
- .service层
在zhu.jdbc.service包下创建一个ITb_UserService 类
ITb_UserService 如下:
1 package zhu.jdbc.service; 2 3 import zhu.jdbc.command.IServiceCommand; 4 import zhu.jdbc.domain.Tb_User; 5 6 7 public interface ITb_UserService extends IServiceCommand<Tb_User> { 8//这里与dao层的中的ITb_User.java是一样的意思9 }
1.1 这里继承的 IServiceCommand 类是在zhu.jdbc.command下 创建一个IServiceCommand的类
代码IServiceCommand 如下:
1 package zhu.jdbc.command; 2 3 import java.util.List; 4 5 6 public interface IServiceCommand<T> { 7//查询所有的数据 8public List<T> queryAllData(); 9//新增数据10publicboolean insertData(T t); 11//修改数据12publicboolean update(T t); 13//删除数据14publicboolean delete(int id); 15//查询一条数据通过ID16public T queryDataById(int id); 17 }
2. service.imp层
//这里的 service层要想与 dao层(BAL层逻辑层)建立联系那么必须要 创建 dao层的对象
在zhu.jdbc.service.imp包下创建一个ITb_UserServiceImpI 类
ITb_UserServiceImpI 代码如下:
1 package zhu.jdbc.service.imp; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.util.List; 7 8 import zhu.jdbc.dao.ITb_User; 9 import zhu.jdbc.dao.imp.ITb_UserImpI; 10 import zhu.jdbc.domain.Tb_User; 11 import zhu.jdbc.service.ITb_UserService; 12 /** 13 * 链接与dao层的链接 14 * @author Xiao_Zhu 15 * 16 */ 17 public class ITb_UserServiceImpI implements ITb_UserService{ 18public Connection conn1 = null; 19public ResultSet rs = null; 20public PreparedStatement ps = null; 21boolean b=false; 22//这里的 service层要想玉 dao层(BAL层逻辑层)建立联系那么必须要 创建 dao层的对象 23 ITb_User myiTb_User=new ITb_UserImpI();//创建了 dao层的ITb_UserImp对象 2425//查询所有数据26 @Override 27public List<Tb_User> queryAllData() { 2829return myiTb_User.queryAllData(); 30 } 3132//新增 33 @Override 34publicboolean insertData(Tb_User t) { 35if (t!=null) { 36if (t!=null) { 37 myiTb_User.insertData(t); 38 b=true; 39 } 40 } 41return b; 42 } 4344//修改45 @Override 46publicboolean update(Tb_User t) { 47if (t!=null) { 48if (t!=null) { 49 myiTb_User.update(t); 50 b=true; 51 } 52 } 53return b; 54 } 55//删除56 @Override 57publicboolean delete(int id) { 58if (id!=0) { 59 myiTb_User.delete(id); 60 b=true; 61 } 62return b; 63 } 64//查询一条数据65 @Override 66public Tb_User queryDataById(int id) { 67if (id!=0) { 68return myiTb_User.queryDataById(id); 69 } 70else { 71returnnull; 72 } 73 } 7475 }
6. Web层(相当于界面层)
在zhu.jdbc.servlet包下创建一个Servlet_TbUser 类
创建的Servlet_TbUser类要在web配置
web的配置内容如下:
1 2 <!--Servlet_TbUser.java的配置--> 3 <servlet> 4 <servlet-name>Servlet_TbUser</servlet-name> 5 <servlet-class>zhu.jdbc.servlet.Servlet_TbUser</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>Servlet_TbUser</servlet-name> 9 <url-pattern>/zhu/Servlet_TbUser</url-pattern> 10 </servlet-mapping>
Servlet_TbUser 代码如下:
1 package zhu.jdbc.servlet; 2 3 import java.io.IOException; 4 import java.sql.Date; 5 import java.text.ParseException; 6 import java.text.SimpleDateFormat; 7 import java.util.List; 8 9 import javax.servlet.ServletException; 10 import javax.servlet.http.HttpServlet; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 14 import zhu.jdbc.domain.Tb_User; 15 import zhu.jdbc.service.ITb_UserService; 16 import zhu.jdbc.service.imp.ITb_UserServiceImpI; 17 18 public class Servlet_TbUser extends HttpServlet { 19 20/** 21 * 22*/ 23privatestaticfinallong serialVersionUID = 1L; 24 25//这里建立 与service层的 联系 创建一个service层imp的某个的对 26 ITb_UserService myITb_UserService=new ITb_UserServiceImpI(); 27 28 @Override 29protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp) 30throws ServletException, IOException { 31 doPost(req, resp); 32 } 33 34 @Override 35protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) 36throws ServletException, IOException { 37 request.setCharacterEncoding("UTF-8");//解决乱码 38 String type=request.getParameter("who"); 39//新增 40if("Insert".equals(type)){ 41 Insert(request, response); 42 } 43elseif("update".equals(type)){ 44 update(request, response); 45 } 46elseif("queryById".equals(type)){ 47 queryById(request, response); 48 } 49elseif("delete".equals(type)){ 50 delete(request, response); 51 } 52elseif("queryAll".equals(type)){ 53 queryAll(request, response); 54 } 55 } 56//新增 57publicvoid Insert(HttpServletRequest request, HttpServletResponse response) 58throws ServletException, IOException { 59//这里jsp中name专递过来的参数 60 String name=request.getParameter("name"); 61 String birthday=request.getParameter("birthday"); 62 String password=request.getParameter("password"); 63 String email=request.getParameter("email"); 64 String sex=request.getParameter("sex"); 65//把获取到的这些值放到user里 66 Tb_User user =new Tb_User(); 67 68try { 69//下面两句是把 string 转换为 sql类型的 时间格式 70 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 71 user.setBirthday(new Date(sdf.parse(birthday).getTime())); 72 } catch (ParseException e1) { 73 e1.printStackTrace(); 74 } 75 76 user.setEmail(email); 77 user.setName(name) ; 78 user.setPassword(password); 79if ("1".equals(sex)) { 80 user.setSex(true); 81 } 82elseif ("0".equals(sex)) { 83 user.setSex(false); 84 } 85//最后调用服务来添加 86 String message=null; 87if (myITb_UserService.insertData(user)==true) { 88 queryAll(request, response); 89 } 90else { 91 message="新增失败!!!"; 92 request.setAttribute("msg", message); 93 request.getRequestDispatcher("/index.jsp").forward(request, response); 94 } 95 96 97 } 98//修改 99publicvoid update(HttpServletRequest request, HttpServletResponse response) 100throws ServletException, IOException { 101 String name=request.getParameter("name"); 102 String birthday=request.getParameter("birthday"); 103 String password=request.getParameter("password"); 104 String email=request.getParameter("email"); 105 String sex=request.getParameter("sex"); 106 String id=request.getParameter("id"); 107//把获取到的这些值放到user里108 Tb_User user =new Tb_User(); 109try { 110//下面两句是把 string 转换为 sql类型的 时间格式111 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 112 user.setBirthday(new Date(sdf.parse(birthday).getTime())); 113 } catch (ParseException e1) { 114 e1.printStackTrace(); 115 } 116 user.setId(Integer.parseInt(id)); 117 user.setEmail(email); 118 user.setName(name) ; 119 user.setPassword(password); 120if ("1".equals(sex)) { 121 user.setSex(true); 122 } 123elseif ("0".equals(sex)) { 124 user.setSex(false); 125 } 126boolean b= myITb_UserService.update(user); 127if (b==true) { 128 queryAll(request, response); 129 } 130else { 131 request.setAttribute("msg", "修改失败!!"); 132 request.getRequestDispatcher("/index.jsp").forward(request, response); 133 } 134 request.getRequestDispatcher("/jsp/User.jsp").forward(request, response); 135 } 136//查询一条数据137publicvoid queryById(HttpServletRequest request, HttpServletResponse response) 138throws ServletException, IOException { 139 Tb_User user=null; 140 String id= request.getParameter("id"); 141 System.out.println(id); 142 user= myITb_UserService.queryDataById(Integer.parseInt(id) ); 143 request.setAttribute("user", user); 144 request.getRequestDispatcher("/jsp/User.jsp").forward(request, response); 145 } 146//删除147publicvoid delete(HttpServletRequest request, HttpServletResponse response) 148throws ServletException, IOException { 149 String id= request.getParameter("id"); 150 System.out.println(id); 151boolean message=myITb_UserService.delete(Integer.parseInt(id)); 152if (message==true) { 153 queryAll(request, response); 154 } 155else { 156157 request.setAttribute("msg", "删除失败!!"); 158 request.getRequestDispatcher("/index.jsp").forward(request, response); 159 } 160 } 161//查询所有的数据162publicvoid queryAll(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 163 List<Tb_User> lis=myITb_UserService.queryAllData(); 164 request.setAttribute("list", lis); 165 request.getRequestDispatcher("/jsp/User.jsp").forward(request, response); 166 } 167168 }
三、创建jsp
User的代码如下:
1 < %@ page language ="java" import ="java.util.*" pageEncoding ="UTF-8" % > 2 < % 3 String path = request.getContextPath(); 4 String basePath = request.getScheme() + "://" 5 + request.getServerName() + ":" + request.getServerPort() 6 + path + "/"; 7 % >
8 <!-- c标签要使用,那么就必须要有它 --> 9 < %@taglib uri ="http://java.sun.com/jsp/jstl/core" prefix ="c" % > 10 < c:set scope ="page" var ="url" 11 value ="${pageContext.request.contextPath }" ></ c:set >
12 13 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > 14 < html > 15 < head > 16 < base href ="<%=basePath%>" > 17 18 < title >新增用户</title>1920<meta http-equiv="pragma" content="no-cache">21<meta http-equiv="cache-control" content="no-cache">22<meta http-equiv="expires" content="0">23<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">24<meta http-equiv="description" content="This is my page">252627</head>2829<body>30<div align="center"31 style="width: 400px; position: relative;left:450px">32<form action="${url}/zhu/Servlet_TbUser?who=Insert" method="post">33<h4>新增用户</h4>34 姓名: <input type="text" name="name"><br />35 密码: <input type="text" name="password"><br />36 出生日期 : <input type="text" name="birthday"><br />37 性别: <select name="sex">38<option value="0">男</option>39<option value="1">女</option>40</select><br />41<input type="submit" value="新增"/>42<hr />43</form>44</div>45<div align="center"style="width: 400px; position: relative;left:450px;">46<form action="${url}/zhu/Servlet_TbUser?who=queryAll" method="post">47<input type="submit" value="查询所有的数据"/><br/>48<table border="1" cellspacing="0">49<thead>50<tr><td>ID</td><td>姓名</td><td>密码</td><td>日期</td><td>性别</td><td>操作</td></tr>51</thead>52<tbody>53<c:forEach items="${list}" var="list">54<tr>55<td>${list.id }</td>56<td>${list.name }</td>57<td>${list.password }</td>58<td>${list.birthday }</td>59<td><c:if test="${list.sex==false }">男</c:if>60<c:if test="${list.sex==true }">女</c:if></td>61<td><a href= "${url}/zhu/Servlet_TbUser?who=queryById&id=${list.id}" style=‘text-decoration:none‘ onclick=‘update(this)‘>修改 </a>62<a href= "${url}/zhu/Servlet_TbUser?who=delete&id=${list.id}" style=‘text-decoration:none‘>删除</a></td>63</tr>64</c:forEach>65</tbody>66</table>67<hr />68</form>69</div>70<div align="center"71 style="width: 400px; position: relative;left:450px">72<form action="${url}/zhu/Servlet_TbUser?who=Insert" method="post">73<h4>修改用户</h4>74 姓名: <input type="text" name="name" value="${user.name }"><br />75 密码: <input type="text" name="password" value="${user.password }"><br />76 出生日期 : <input type="text" name="birthday" value="${user.birthday }"><br />77 性别: <select name="sex">78<option value="0">男</option>79<option value="1">女</option>80</select><br />81<input type="submit" value="保存修改"/>82<hr />83</form>84</div>85</body>86</html>
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>2223<body>24<h1>${msg }</h1><br>25</body>26</html>
四、运行效果:
源码下载地址: http://pan.baidu.com/s/1eSkpqHs
原文:http://www.cnblogs.com/zhu520/p/6913650.html
内容总结
以上是互联网集市为您收集整理的java:jdbc+servlet+jsp+mysql全部内容,希望文章能够帮你解决java:jdbc+servlet+jsp+mysql所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。