您的位置:首页 > 数据库

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: