前言:

最近一直在做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. 游戏算法中lua脚本详解

    此外,函数本身也是一个变量,比如: dp@dp:~ % cat test.lua local mylen={} mylen.len3=function (x,y,z) return math.sqrt ...

  2. Razor视图引擎

    在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. (1)Razor文件类型: ...

  3. OpenStack JEOS 镜像

    JEOS:Just Enough Operating System 维基百科地址:http://en.wikipedia.org/wiki/Just_enough_operating_system O ...

  4. JDK TOMCAT MAVEN在myeclipse如何配置

    对于没有基础的人来说,本工具务必放在D盘根目录下. 1配置环境变量, "我的电脑-->右键-->属性" 貌似是这样吧,我电脑桌面没"我的电脑"或&q ...

  5. SQLiteDatabase中的事务

    beginTransaction():开始事务endTransaction():结束事务SQLiteDatabase还提供了如下方法来判断当前上下文是否处于事物环境中.inTransaction(): ...

  6. 用javascript向一个网页连接接口发送请求,并接收该接口返回的json串

    一般前端与后端的互交都是通过json字符串来互交的,我的理解就是与网页接口的来回数据传递采用的数据结构就是json.一般是这样. 比如后端的代码是这样的: @RequestMapping(value ...

  7. LINQ TO SQL 常用语法

    LINQ To SQL中IN的用法   IN: C# var result = from s1 in context.Customers where (new string[] { "UK& ...

  8. es6新特性:

    http://es6katas.org/ es6+一些新特性,截图如下 对应方法,函数显示相关的数据,如图: 对应方法,函数的例子,如下

  9. 无法找到脚本引擎Jscript解决

    无法找到脚本引擎Jscript解决 CScript 错误: 无法找到脚本“InstallWizardForVS2010.js”的脚本引擎“JScript”. 目标环境:windows 7 64bit系 ...

  10. [Android开发常见问题-14] Unexpected namespace prefix "abc" found for tag SomeThing

    很多开发者朋友可能会自己定义一些控件,以此来扩展现有控件的功能,在扩展空间的时候通常会自己定义一些属性,例如: [html]  view plain copy   <android.alex.v ...