`
java--hhf
  • 浏览: 309295 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

阅读更多

前言:

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

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

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

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

 

背景:

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

              模型是javaBean,

              视图是JSP,

             控制是servlet。

       web的运行机制:

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

 正文:

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

 

(一)从JSP到servlet

1、发信息

表单提交

<form action="相对地址URL" name="表单名字" method="提交方式(post(推荐)、get)">

        <input type="text" name="文本框名字"  /><!--一个文本输入框-->

</form>

 

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

<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文件,获取传递过来的参数值

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

 

ok,完成

 

(二)从servlet到数据库

1、获得数据(MySql为例)

①创建数据库连接池

创建一个配置文件,如图

确保名字一致,

<?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为项目名 -->

 

②获取链接

    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语句,并返回结果

/* 查询数据库,输出符合要求的记录的情况*/
    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保存数据)

            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());
            }

 

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

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

 

2、接收数据

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

    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项目开发案例全程实录》

 

 

 

 

4
0
分享到:
评论
1 楼 软媒魔方 2014-05-12  
Thanks,Thanks,Thanks.非常详细,帮了大忙了,辛苦了。

相关推荐

    JSP+servlet+SQL示例.rar(含源码)

    本示例压缩包"JSP+servlet+SQL示例.rar"提供了一整套包含源码的实例,旨在帮助开发者深入理解这三者之间的交互与整合应用。下面我们将逐一探讨这些技术及其在实际项目中的应用场景。 1. JSP(JavaServer Pages): ...

    网上花店 JSP+SERVLET+JAVABEAN (数据库SQL SERVER2005)

    在本实例中,JavaBean可能包含了商品信息、订单信息、用户信息等模型类,它们作为数据传输对象(DTO)在JSP、Servlet之间传递。JavaBean遵循单一职责原则,使得代码结构清晰,易于维护。 **数据库设计与SQL Server ...

    jsp+servlet+javabean架构项目(初级)

    本项目以"jsp+servlet+javabean"为基础,旨在为初学者提供一个实践平台,帮助理解这三种技术的集成与应用。 **JSP(JavaServer Pages)** JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现...

    学生信息管理系统jsp+servlet

    1. **展示数据**:JSP页面通过JSP动作标签(如&lt;jsp:useBean&gt;、&lt;jsp:setProperty&gt;)和EL(Expression Language)表达式来获取和显示Servlet传递的数据。 2. **表单提交**:JSP页面包含HTML表单元素,用户可以通过...

    学生信息管理系统jsp+sql

    4. **系统架构**:本系统采用典型的三层架构,包括表现层(JSP)、业务逻辑层(Servlet或JavaBean)和数据访问层(DAO)。表现层负责用户界面的展示,业务逻辑层处理业务规则,数据访问层则与数据库进行交互,实现...

    学生信息管理系统(JSP+Servlet+EasyUI)--入门项目

    JSP文件经过服务器处理后转化为Servlet执行,从而将服务器端的数据传递到前端页面。 2. Servlet: Servlet是Java Web应用的核心组件,它是一个Java类,用于处理来自客户端(如浏览器)的请求并生成响应。在学生...

    BBS_jsp_sqlserver

    在这个BBS系统中,JSP页面负责处理用户的请求,展示界面,并将用户输入的数据传递给后台JavaBean或Servlet进行处理。 二、BBS论坛系统 BBS(Bulletin Board System)是一种在线讨论平台,用户可以在这里发布话题、...

    jsp+servlet+javabean实现的增删改查

    `jsp`用于展示页面,`servlet`处理业务逻辑,`javabean`则作为数据传输对象,三者协同工作,可以实现强大的后端功能,包括对数据的增删改查操作。下面将详细解释这三个技术以及它们在实际应用中的角色。 1. **JSP ...

    JSP+Servlet+Mysql个人网站

    在实际开发中,这三者之间的协作流程大致如下: - 用户通过浏览器发送HTTP请求到服务器。 - 服务器接收到请求后,Servlet解析请求,执行相应的业务逻辑。 - Servlet可能需要与MySQL数据库交互,例如查询或更新数据。...

    jsp成绩管理系统jsp+servlet+javabean

    提交表单后,Servlet会解析请求参数,将这些数据传递给JavaBean进行处理。 **7. 错误处理和验证** 为了确保数据的准确性和完整性,系统可能包含输入验证机制,例如检查分数是否在合理范围内。同时,系统还应有错误...

    使用jsp和sql实现学生成绩管理

    5. 将这些对象传递回JSP页面,JSP页面根据这些数据渲染响应。 四、系统设计与文档 项目提供的系统设计文档图和说明,可能包含了以下内容: 1. 系统架构:描述了系统的主要组成部分及其相互关系,如前端JSP页面、...

    jsp+servlet+mysql框架

    4. **JSP渲染**:Servlet将处理结果传递给JSP页面,JSP负责将这些数据转化为用户可读的HTML格式。 5. **响应返回**:生成的HTML页面返回给用户浏览器,用户看到动态生成的网页内容。 在提供的压缩包文件...

    JSP+Servlet+JavaBean增删改查实例

    在这个"JSP+Servlet+JavaBean增删改查实例"中,你将学习到如何结合这三个技术来实现基本的Web应用程序功能,包括数据库交互、请求响应处理、以及页面与服务器之间的数据传输。这不仅是Java Web开发的基石,也是...

    基于JSP+Servlet的提升项目

    通过使用JSP的内置对象如request、response、session等,可以方便地处理用户请求,传递数据到后端。 2. **Servlet** Servlet是Java Web应用程序的核心组件,用于接收和响应客户端请求。在本项目中,Servlet作为...

    jsp+servlet+mvc实现登陆、查询新、删除

    本项目结合这三者,实现了用户登录、数据查询以及删除功能,以下是它们的核心概念及实现方式的详细讲解。 1. JSP(JavaServer Pages): JSP是一种基于Java的服务器端脚本语言,用于生成动态网页。在JSP中,开发者...

    JAVA,JSP,SERVLET课件及一些常见问题解决方法

    "二 第4课 JavaBean.ppt"可能涵盖了JavaBean的规范、属性、构造函数、getter/setter方法以及如何在JSP中使用JavaBean来传递数据。 6. **示例代码**:"JspJaveBeanAccessCustomer"、"UpLoadFileBeanDemo"、...

    一个学生信息管理系统,使用jsp+Servlet的MVC模式,mysql数据库,适合初学者

    在本系统中,jsp页面会根据Servlet传递的数据,动态生成包含学生信息的表格或者其他UI元素。 系统中使用了MySQL数据库作为数据存储。MySQL是一款广泛使用的开源关系型数据库管理系统,它具有良好的性能和稳定性,...

    J2EE电子商务项目_需求与完成品(jsp+servlet+javabean+oracle).rar

    在电子商务项目中,javabean常用来表示实体对象,如用户、商品、订单等,便于在各层之间传递数据。 三、数据库设计与Oracle的使用 项目采用了Oracle数据库,这是一个强大且广泛使用的关系型数据库管理系统,适用于...

    Java初学者JDBC+Servlet+jsp

    Java初学者在学习Web开发时,常常会接触到JDBC、Servlet和JSP这三个核心技术,它们是构建基于Java的动态Web应用程序的基础。以下是对这些技术的详细介绍: 1. JDBC(Java Database Connectivity): JDBC是Java...

    JSP+SERVLET注册登陆,用户密码加密程序

    这个JSP+Servlet的小程序对于初学者来说,是一个很好的学习资源,涵盖了Web开发的基础知识和实战技能。通过分析和理解这个程序,开发者可以提升自己在Web应用开发、数据库操作、安全编程等方面的能力。

Global site tag (gtag.js) - Google Analytics