前言:

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

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

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

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

背景:

目前业界很流行的WVC(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,完成

结束语:

推荐一本JavaScript进阶读物--------《JavaScript修炼之道》

推荐一本项目开发实录书籍----------《Java项目开发案例全程实录》

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

  1. JSP Servlet SQL 三者之间数据传递

    前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据. 浏览器时代来到,向我们召唤出更炫.更简洁.更方便.更大气的网 ...

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

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

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

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

  4. activity之间的数据传递方法

    1  基于消息的通信机制 Intent--------boudle,extra 用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等 详细介绍下Intent机制 Inte ...

  5. Vue基础知识之组件及组件之间的数据传递(五)

    vue中的组件是自定的标签,可以扩展的原生html元素,封装可复用的代码 note: 1.在标签命中不要使用大写,标签名字必须用短横线隔开 2.模板中只能有一个根元素,不能使用并列标签. 定义组件 全 ...

  6. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

  7. Activity之间的数据传递

    最常用的Activity之间的数据传递. btnStartAty1.setOnClickListener(new View.OnClickListener() { @Override public v ...

  8. ASP.NET MVC 之控制器与视图之间的数据传递

    今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, ...

  9. (转载)Javascript操作表单之间的数据传递

    (转载)http://www.aspxhome.com/javascript/skills/200710/214825.htm 今天有朋友问我关于用JAVASCRIPT来进行页面各表单之间的数据传递的 ...

随机推荐

  1. BrowserSync-多浏览器测试工具

    阅读目录 自动刷新 介绍BrowserSync BrowserSync具体使用 BrowserSync配合gulp 自动刷新 自动刷新,顾名思义,就是不用我们去F5刷新.假设有一天我们写代码,只需要c ...

  2. AQTime教程

    1 简介 AQTime和MemProof都是AutomatedQA旗下的产品,AQTime比MemProof提供了更丰富强大的功能.该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和 ...

  3. centos7 安装selenium和firefox

    之前有一篇文章介绍过在ubuntu下安装selenium和firefox 现在介绍下centos7 注意以下都是下载的linux64位的软件,32位的请自己找下链接, 现在使用的python的版本是3 ...

  4. 深入理解JS函数节流和去抖动

    一.什么是节流和去抖? 1.节流 节流就是拧紧水龙头让水少流一点,但是不是不让水流了.想象一下在现实生活中有时候我们需要接一桶水,接水的同时不想一直站在那等着,可能要离开一会去干一点别的事请,让水差不 ...

  5. 查询mysql数据库中所有表名

    查找所有表的语句 select table_name from information_schema.tables where table_schema='当前数据库';  

  6. [Javascript] Automate the process of flattening deeply nested arrays using ES2019's flat method

    Among the features introduced to the language of JavaScript in ES2019 is Array.prototype.flat. In th ...

  7. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  8. FTP服务器配置

    一.FTP服务器: FTP服务使用FTP协议来进行文件的上传和下载,可以非常方便的进行远距离的文件传输,并可以实现相应的安全控制. FTP和NFS.Samba :三大文件服务器 主动模式:消息端口21 ...

  9. webDriver API——第11部分Remote WebDriver

    The WebDriver implementation. class selenium.webdriver.remote.webdriver.WebDriver(command_executor=' ...

  10. React中静态类型校验 - PropTypes

    1.基本说明PropTypes定义为组件类自身的属性,用以定义prop的类型.在开发模式下,当提供一个不合法的值作为prop时,控制台会出现警告: 在产品模式下,为了性能考虑应忽略propTypes ...