前言:

最近一直在做WEB开发,现总结一下这一段时间的体会和感触。

切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据。

浏览器时代来到,向我们召唤出更炫、更简洁、更方便、更大气的网站。

这篇博客目的在于为大家解决web开发中最基础的数据传递操作,让大家有一个好的起点,在web开放中更加游刃有余

背景:

目前业界很流行的MVC(model-view-control)开发模式,具体暂可理解为

模型是javaBean,

视图是JSP,

控制是servlet。

web的运行机制:

数据首先在jsp上被展示出来,用户看到页面后触发一些事件,并可能传递数据,这些数据和请求被控制器接收到,然后开始处理(往往会需要有一些数据库的操 作(查询,修改数据库数据)),当这些处理结束后,我们就需要将数据反馈到JSP上显示给用户看,完成一次完整的交互过程。

正文:

根据背景所述的顺序,我们依次介绍----如何从JSP传数据到servlet并接收、如何在servlet里面获得数据库数据并处理、如何将servlet内的数据传递给jsp并显示在网页上。

(一)从JSP到servlet

1、发信息

表单提交

  1. <form action="相对地址URL" name="表单名字" method="提交方式(post(推荐)、get)">
  2. <input type="text" name="文本框名字"  /><!--一个文本输入框-->
  3. </form>

定义一个函数来处理表单文本框检查非空并提交表单事件

  1. <script>
  2. $(document).ready(function(){
  3. $("#被单击按钮的ID").click(function(){
  4. if(document.all.文本框名字.value.length==0){
  5. alert("输入不能为空");
  6. return false;
  7. }
  8. document.all.表单名字submit();
  9. return true;});
  10. });
  11. </script>

2、收信息来到表单提交时URL所指向的servlet文件,获取传递过来的参数值

  1. String search = java.net.URLDecoder.decode(request.getParameter("文本框名字"),"utf-8");
  2. System.out.println("在search的servlet中接收到的search参数为-->"+search);

ok,完成

(二)从servlet到数据库

1、获得数据(MySql为例)

①创建数据库连接池

创建一个配置文件,如图

确保名字一致,

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Context>
  3. <Resource name="jdbc/LeLe"
  4. auth="Container"
  5. type="javax.sql.DataSource"
  6. maxActive="50"
  7. maxIdle="5"
  8. maxWait="10000"
  9. logAbandoned="true"
  10. username=""
  11. password=""
  12. driverClassName="com.mysql.jdbc.Driver"
  13. url="jdbc:mysql://localhost:3306/lele" />
  14. </Context>
  15. <!-- jdbc/LeLe为项目名 -->

②获取链接

  1. public static Connection getConnection() {
  2. Connection con = null;    //创建用于连接数据库的Connection对象
  3. DataSource ds = null;
  4. try {
  5. Context initContext = new InitialContext();
  6. Context envContext = (Context)initContext.lookup("java:/comp/env");
  7. ds = (DataSource)envContext.lookup("jdbc/LeLe");
  8. System.out.println(ds.getConnection());
  9. } catch (Exception e1) {
  10. System.out.println("加载数据库驱动失败"+e1);
  11. return null;
  12. }// 加载Mysql数据驱动
  13. try {
  14. con = ds.getConnection();// 创建数据连接
  15. System.out.println("数据库连接成功了");
  16. return con;    //返回所建立的数据库连接
  17. } catch (Exception e) {
  18. System.out.println("数据库连接失败" + e.getMessage());
  19. return null;
  20. }
  21. }

③执行SQL语句,并返回结果

  1. /* 查询数据库,输出符合要求的记录的情况*/
  2. private static Connection conn;
  3. private static Statement st;
  4. private static ResultSet rs;
  5. //    public static void main(String [] args){
  6. //        query("select * from agreement");
  7. //    }
  8. public static ResultSet query(String sql ) {
  9. System.out.println("函数DBQuery日志");
  10. if(conn == null){
  11. conn = DBConnection.getConnection();    //同样先要获取连接,即连接到数据库
  12. if(conn == null){
  13. System.out.println("数据库连接失败" );
  14. return null;
  15. }
  16. }
  17. System.out.println("查询函数中连接到数据库数据成功"+conn);
  18. try {
  19. st = (Statement) conn.createStatement();    //创建用于执行静态sql语句的Statement对象,st属局部变量
  20. rs = (ResultSet)st.executeQuery(sql);    //执行sql查询语句,返回查询数据的结果集
  21. if(!rs.next()){
  22. System.out.println("数据库中未查询到数据");
  23. return null;
  24. }
  25. System.out.println("数据库中已经查询到数据");
  26. //            String agreement_id = rs.getString(1);
  27. //            String agreement_content = rs.getString(2);
  28. //            System.out.println("已经查询到数据的数据为----agreement_id:"+agreement_id+"\tagreement_content:"+agreement_content);
  29. return rs;
  30. } catch (SQLException e) {
  31. System.out.println("数据库中查数据失败");
  32. return null;
  33. }
  34. }
  35. public static void closeDB() throws SQLException{
  36. if(null != rs)
  37. rs.close();
  38. if(null != st)
  39. st.close();
  40. if(null != conn)
  41. conn.close();    //关闭数据库连接
  42. }

2、处理数据(使用javaBean保存数据)

  1. if(rs != null){
  2. do{
  3. User user0=new User();//一个javaBean的实例化对象
  4. user0.setUser_id(rs.getString("user_id"));
  5. user0.setUser_name(rs.getString("user_name"));
  6. user0.setUser_email(rs.getString("user_email"));
  7. user0.setUser_password(rs.getString("user_password"));
  8. collection.add(user0);
  9. System.out.println(rs.getString("user_id"));
  10. System.out.println(rs.getString("user_name"));
  11. System.out.println(rs.getString("user_email"));
  12. System.out.println(rs.getString("user_password"));
  13. }while(rs.next());
  14. }
  1. public class User {
  2. private String user_id;//用户编号
  3. private String user_email;//用户邮编
  4. private String user_name;//用户名
  5. private String user_password;//用户密码
  6. public String getUser_id() {
  7. return user_id;
  8. }
  9. public void setUser_id(String userId) {
  10. user_id = userId;
  11. }
  12. public String getUser_email() {
  13. return user_email;
  14. }
  15. public void setUser_email(String userEmail) {
  16. user_email = userEmail;
  17. }
  18. public String getUser_name() {
  19. return user_name;
  20. }
  21. public void setUser_name(String userName) {
  22. user_name = userName;
  23. }
  24. public String getUser_password() {
  25. return user_password;
  26. }
  27. public void setUser_password(String userPassword) {
  28. user_password = userPassword;
  29. }
  30. }

ok,完成

(三)从servlet到JSP

1、发数据

使用重定向将request和response转发给一个JSP

  1. //将数据发到JSP
  2. RequestDispatcher rd = request.getRequestDispatcher("index_search.jsp");
  3. request.setAttribute("test",collection);//存值
  4. rd.forward(request,response);//开始跳转

2、接收数据

来到重定向指向的URL中获取刚才发送过来的数据,并显示在网页上

  1. Collection<User> collectionUser=(Collection<User>)request.getAttribute("test");
  2. Iterator it=collectionUser.iterator();
  3. while(it.hasNext())
  4. {
  5. User user=(User)it.next();
  6. out.println("<td ><div align='center'>"+user.getUser_name()+"</td>");
  7. 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>");
  8. out.println("</tr>");
  9. }

ok,完成

原文地址:http://java--hhf.iteye.com/blog/1973375

JSP Servlet SQL 三者之间数据传递的更多相关文章

  1. JSP、servlet、SQL三者之间的数据传递

    JSP.servlet.SQL三者之间的数据传递 博客分类: web开发 JSPservletSQL数据库连接池web开发  前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记, ...

  2. 解析activity之间数据传递方法的详解

    转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下     1  基于消息的通信机制 ...

  3. Android 在不同Actitity之间数据传递

    本文实现一个简易的人品计算器来实践在不同Actitity之间数据传递 intent的数据传递 从A界面打开B界面 把A界面的数据传递给B界面 1. intent.setData(uri) -- int ...

  4. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  5. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

  6. PCB MVC启动顺序与各层之间数据传递对象关系

    准备着手基于MVC模式写一套Web端流程指示查看,先着手开发WebAPI打通数据接口,后续可扩展手机端 这里将MVC基本关系整理如下: 一.MVC启动顺序 二.MVC各层之间数据传递对象关系

  7. 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...

  8. Android——不同activity之间数据传递

    /* * 不同activity之间数据的传递 */ public class MainActivity extends Activity { private EditText et_name; @Ov ...

  9. 转-Activity之间数据传递之Intent数据传递

    Intent意图 可用于Activity之间的数据传递,一般可分为下面两种情况,从当前Activity传递到目标Activity后有无返回值: 1.传递后无返回值的情况: 1 2 3 4 5 6 7 ...

随机推荐

  1. js限制textarea文本框的文字个数

    现在发微博,那个文本框一般只能输入200字好像,再多就会自动删除,要么是提示字数受限,用Js就可实现本功能.今天带来的这个Js限制表单文本 框文字数量的例子,相信有此方面需要的是个不错的参考.为了便于 ...

  2. Python自动化运维之3、函数、lambda、递归

    一.函数 函数的基础概念: 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基本结构 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在 ...

  3. 『软件介绍』SQLServer2008 基本操作

    0x 01 连接数据库 Win7下,先打开SQLServer管理工具(开始菜单/所有程序/Microsoft SQL Server 2008/SQL Server Management Studio) ...

  4. Entity Framework with MySQL 学习笔记一(insert,update,delete)

    先说说 insert 吧. 当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表, 并且再select出来填充我们的属性(因为有些column默 ...

  5. Cracking the coding interview--Q1.3

    原文 Given two strings, write a method to decide if one is a permutation of the other. 译文 给你两个字符串,写一个方 ...

  6. MCS-51单片机的指令时序

    时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍.状态.机器周期和指令周期,接下来我们分别加以说明. 节拍与状态:    我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示), ...

  7. 模糊集合和隶属度函数--AForge.NET框架的使用(一)

    原文:模糊集合和隶属度函数--AForge.NET框架的使用(一) 什么是AForge.NET? AForge.NET是一个为开发人员和研究人员开发的框架,它可以用于计算机视觉,遗传算法,图像处理,神 ...

  8. 5s

    整理,整顿,清楚,清洁,身美

  9. [HNOI 2013] 旅行 (数学)

    感觉此题难啊,数学还是太渣了,看了半天的题解才算明白了点儿. 题目大意 给一个长度为n且仅由1和-1组成的序列ai, i = 1, 2, ..., n,每个位置都有另一个值vi,要求用某种方案将序列划 ...

  10. fuel部署openStack

    https://code.launchpad.net/fuel [fuel项目] http://www.imgburn.com/ [各种镜像制作工具]