JSP、servlet、SQL三者之间的数据传递
2016-05-04 00:26
495 查看
前言:
最近一直在做WEB开发,现总结一下这一段时间的体会和感触。
切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据。
浏览器时代来到,向我们召唤出更炫、更简洁、更方便、更大气的网站。
这篇博客目的在于为大家解决web开发中最基础的数据传递操作,让大家有一个好的起点,在web开放中更加游刃有余
背景:
目前业界很流行的WVC(model-view-control)开发模式,具体暂可理解为
模型是javaBean,
视图是JSP,
控制是servlet。
web的运行机制:
数据首先在jsp上被展示出来,用户看到页面后触发一些事件,并可能传递数据,这些数据和请求被控制器接收到,然后开始处理(往往会需要有一些数据库的操作(查询,修改数据库数据)),当这些处理结束后,我们就需要将数据反馈到JSP上显示给用户看,完成一次完整的交互过程。
正文:
根据背景所述的顺序,我们依次介绍----如何从JSP传数据到servlet并接收、如何在servlet里面获得数据库数据并处理、如何将servlet内的数据传递给jsp并显示在网页上。
(一)从JSP到servlet
1、发信息
表单提交
Html代码
<form action="相对地址URL" name="表单名字" method="提交方式(post(推荐)、get)">
<input type="text" name="文本框名字" /><!--一个文本输入框-->
</form>
定义一个函数来处理表单文本框检查非空并提交表单事件
Html代码
<script>
$(document).ready(function(){
$("#被单击按钮的ID").click(function(){
if(document.all.文本框名字.value.length==0){
alert("输入不能为空");
return false;
}
document.all.表单名字submit();
return true;});
});
</script>
2、收信息来到表单提交时URL所指向的servlet文件,获取传递过来的参数值
Java代码
String search = java.net.URLDecoder.decode(request.getParameter("文本框名字"),"utf-8");
System.out.println("在search的servlet中接收到的search参数为-->"+search);
ok,完成
(二)从servlet到数据库
1、获得数据(MySql为例)
①创建数据库连接池
创建一个配置文件,如图
确保名字一致,
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/LeLe"
auth="Container"
type="javax.sql.DataSource"
maxActive="50"
maxIdle="5"
maxWait="10000"
logAbandoned="true"
username=""
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/lele" />
</Context>
<!-- jdbc/LeLe为项目名 -->
②获取链接
Java代码
public static Connection getConnection() {
Connection con = null; //创建用于连接数据库的Connection对象
DataSource ds = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("jdbc/LeLe");
System.out.println(ds.getConnection());
} catch (Exception e1) {
System.out.println("加载数据库驱动失败"+e1);
return null;
}// 加载Mysql数据驱动
try {
con = ds.getConnection();// 创建数据连接
System.out.println("数据库连接成功了");
return con; //返回所建立的数据库连接
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
return null;
}
}
③执行SQL语句,并返回结果
Java代码
/* 查询数据库,输出符合要求的记录的情况*/
private static Connection conn;
private static Statement st;
private static ResultSet rs;
// public static void main(String [] args){
// query("select * from agreement");
// }
public static ResultSet query(String sql ) {
System.out.println("函数DBQuery日志");
if(conn == null){
conn = DBConnection.getConnection(); //同样先要获取连接,即连接到数据库
if(conn == null){
System.out.println("数据库连接失败" );
return null;
}
}
System.out.println("查询函数中连接到数据库数据成功"+conn);
try {
st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量
rs = (ResultSet)st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集
if(!rs.next()){
System.out.println("数据库中未查询到数据");
return null;
}
System.out.println("数据库中已经查询到数据");
// String agreement_id = rs.getString(1);
// String agreement_content = rs.getString(2);
// System.out.println("已经查询到数据的数据为----agreement_id:"+agreement_id+"\tagreement_content:"+agreement_content);
return rs;
} catch (SQLException e) {
System.out.println("数据库中查数据失败");
return null;
}
}
public static void closeDB() throws SQLException{
if(null != rs)
rs.close();
if(null != st)
st.close();
if(null != conn)
conn.close(); //关闭数据库连接
}
2、处理数据(使用javaBean保存数据)
Java代码
if(rs != null){
do{
User user0=new User();//一个javaBean的实例化对象
user0.setUser_id(rs.getString("user_id"));
user0.setUser_name(rs.getString("user_name"));
user0.setUser_email(rs.getString("user_email"));
user0.setUser_password(rs.getString("user_password"));
collection.add(user0);
System.out.println(rs.getString("user_id"));
System.out.println(rs.getString("user_name"));
System.out.println(rs.getString("user_email"));
System.out.println(rs.getString("user_password"));
}while(rs.next());
}
Java代码
public class User {
private String user_id;//用户编号
private String user_email;//用户邮编
private String user_name;//用户名
private String user_password;//用户密码
public String getUser_id() {
return user_id;
}
public void setUser_id(String userId) {
user_id = userId;
}
public String getUser_email() {
return user_email;
}
public void setUser_email(String userEmail) {
user_email = userEmail;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String userName) {
user_name = userName;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String userPassword) {
user_password = userPassword;
}
}
ok,完成
(三)从servlet到JSP
1、发数据
使用重定向将request和response转发给一个JSP
Java代码
//将数据发到JSP
RequestDispatcher rd = request.getRequestDispatcher("index_search.jsp");
request.setAttribute("test",collection);//存值
rd.forward(request,response);//开始跳转
2、接收数据
来到重定向指向的URL中获取刚才发送过来的数据,并显示在网页上
Java代码
Collection<User> collectionUser=(Collection<User>)request.getAttribute("test");
Iterator it=collectionUser.iterator();
while(it.hasNext())
{
User user=(User)it.next();
out.println("<td ><div align='center'>"+user.getUser_name()+"</td>");
out.println("<td ><div align='center'><a href='#' onclick=window.open('MyJsp.jsp?usid="+user.getUser_id().trim()+"','newwindow','width=600,height=350,top=300,left=300')>管理</a></td>");
out.println("</tr>");
}
ok,完成
结束语:
推荐一本JavaScript进阶读物--------《JavaScript修炼之道》
推荐一本项目开发实录书籍----------《Java项目开发案例全程实录》
原文地址:http://java--hhf.iteye.com/category/349321
最近一直在做WEB开发,现总结一下这一段时间的体会和感触。
切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据。
浏览器时代来到,向我们召唤出更炫、更简洁、更方便、更大气的网站。
这篇博客目的在于为大家解决web开发中最基础的数据传递操作,让大家有一个好的起点,在web开放中更加游刃有余
背景:
目前业界很流行的WVC(model-view-control)开发模式,具体暂可理解为
模型是javaBean,
视图是JSP,
控制是servlet。
web的运行机制:
数据首先在jsp上被展示出来,用户看到页面后触发一些事件,并可能传递数据,这些数据和请求被控制器接收到,然后开始处理(往往会需要有一些数据库的操作(查询,修改数据库数据)),当这些处理结束后,我们就需要将数据反馈到JSP上显示给用户看,完成一次完整的交互过程。
正文:
根据背景所述的顺序,我们依次介绍----如何从JSP传数据到servlet并接收、如何在servlet里面获得数据库数据并处理、如何将servlet内的数据传递给jsp并显示在网页上。
(一)从JSP到servlet
1、发信息
表单提交
Html代码
<form action="相对地址URL" name="表单名字" method="提交方式(post(推荐)、get)">
<input type="text" name="文本框名字" /><!--一个文本输入框-->
</form>
定义一个函数来处理表单文本框检查非空并提交表单事件
Html代码
<script>
$(document).ready(function(){
$("#被单击按钮的ID").click(function(){
if(document.all.文本框名字.value.length==0){
alert("输入不能为空");
return false;
}
document.all.表单名字submit();
return true;});
});
</script>
2、收信息来到表单提交时URL所指向的servlet文件,获取传递过来的参数值
Java代码
String search = java.net.URLDecoder.decode(request.getParameter("文本框名字"),"utf-8");
System.out.println("在search的servlet中接收到的search参数为-->"+search);
ok,完成
(二)从servlet到数据库
1、获得数据(MySql为例)
①创建数据库连接池
创建一个配置文件,如图
确保名字一致,
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/LeLe"
auth="Container"
type="javax.sql.DataSource"
maxActive="50"
maxIdle="5"
maxWait="10000"
logAbandoned="true"
username=""
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/lele" />
</Context>
<!-- jdbc/LeLe为项目名 -->
②获取链接
Java代码
public static Connection getConnection() {
Connection con = null; //创建用于连接数据库的Connection对象
DataSource ds = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("jdbc/LeLe");
System.out.println(ds.getConnection());
} catch (Exception e1) {
System.out.println("加载数据库驱动失败"+e1);
return null;
}// 加载Mysql数据驱动
try {
con = ds.getConnection();// 创建数据连接
System.out.println("数据库连接成功了");
return con; //返回所建立的数据库连接
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
return null;
}
}
③执行SQL语句,并返回结果
Java代码
/* 查询数据库,输出符合要求的记录的情况*/
private static Connection conn;
private static Statement st;
private static ResultSet rs;
// public static void main(String [] args){
// query("select * from agreement");
// }
public static ResultSet query(String sql ) {
System.out.println("函数DBQuery日志");
if(conn == null){
conn = DBConnection.getConnection(); //同样先要获取连接,即连接到数据库
if(conn == null){
System.out.println("数据库连接失败" );
return null;
}
}
System.out.println("查询函数中连接到数据库数据成功"+conn);
try {
st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量
rs = (ResultSet)st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集
if(!rs.next()){
System.out.println("数据库中未查询到数据");
return null;
}
System.out.println("数据库中已经查询到数据");
// String agreement_id = rs.getString(1);
// String agreement_content = rs.getString(2);
// System.out.println("已经查询到数据的数据为----agreement_id:"+agreement_id+"\tagreement_content:"+agreement_content);
return rs;
} catch (SQLException e) {
System.out.println("数据库中查数据失败");
return null;
}
}
public static void closeDB() throws SQLException{
if(null != rs)
rs.close();
if(null != st)
st.close();
if(null != conn)
conn.close(); //关闭数据库连接
}
2、处理数据(使用javaBean保存数据)
Java代码
if(rs != null){
do{
User user0=new User();//一个javaBean的实例化对象
user0.setUser_id(rs.getString("user_id"));
user0.setUser_name(rs.getString("user_name"));
user0.setUser_email(rs.getString("user_email"));
user0.setUser_password(rs.getString("user_password"));
collection.add(user0);
System.out.println(rs.getString("user_id"));
System.out.println(rs.getString("user_name"));
System.out.println(rs.getString("user_email"));
System.out.println(rs.getString("user_password"));
}while(rs.next());
}
Java代码
public class User {
private String user_id;//用户编号
private String user_email;//用户邮编
private String user_name;//用户名
private String user_password;//用户密码
public String getUser_id() {
return user_id;
}
public void setUser_id(String userId) {
user_id = userId;
}
public String getUser_email() {
return user_email;
}
public void setUser_email(String userEmail) {
user_email = userEmail;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String userName) {
user_name = userName;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String userPassword) {
user_password = userPassword;
}
}
ok,完成
(三)从servlet到JSP
1、发数据
使用重定向将request和response转发给一个JSP
Java代码
//将数据发到JSP
RequestDispatcher rd = request.getRequestDispatcher("index_search.jsp");
request.setAttribute("test",collection);//存值
rd.forward(request,response);//开始跳转
2、接收数据
来到重定向指向的URL中获取刚才发送过来的数据,并显示在网页上
Java代码
Collection<User> collectionUser=(Collection<User>)request.getAttribute("test");
Iterator it=collectionUser.iterator();
while(it.hasNext())
{
User user=(User)it.next();
out.println("<td ><div align='center'>"+user.getUser_name()+"</td>");
out.println("<td ><div align='center'><a href='#' onclick=window.open('MyJsp.jsp?usid="+user.getUser_id().trim()+"','newwindow','width=600,height=350,top=300,left=300')>管理</a></td>");
out.println("</tr>");
}
ok,完成
结束语:
推荐一本JavaScript进阶读物--------《JavaScript修炼之道》
推荐一本项目开发实录书籍----------《Java项目开发案例全程实录》
原文地址:http://java--hhf.iteye.com/category/349321
相关文章推荐
- 数据库拆分的几种方式
- MySQL 存储过程
- Eclipse连接SQL Server 2008与连接SQL Server 2000代码的不同及连接2008过程中遇到的问题
- MySQL_Database_Show_Create_Drop
- MySQL_Table_Create_Describe_Alter_Drop
- MySQL_Character_Setting
- MySQL_Aggregate_Functions
- oracle细节(一)
- 关系数据库常用SQL语句语法大全
- Oracle_Database_11g_标准版_企业版__下载地址_详细列表
- django1.10+mysql/connector 2.1.3运行polls demo的问题
- redis入门笔记(1)
- ubuntu用ppa安装mysql并配置远程连接
- 从数据库select查询出来的数组
- Oracle JDK的GC日志分析
- MongoDB增删查改
- mysql5.6.29添加慢查询sql日志
- SQL异常提示某字段没找到的原因之一
- redis入门笔记(1)
- pl/sql连接数据库