Javaweb项目 利用JSP响应浏览器

一、javaweb  数据访问流程?

1.浏览器 http 访问服务器 找到 servlet(HttpServeltDemo.java文件)

2.servle 通过dao 访问数据库 数据库将数据返回给servlet

3.servlet找寻指定的JSP文件 将student数据传送给JSP

4.JSP获得数据,展示在网页上。将数据返回给servlet

5.servlet将数据 传送给浏览器。

二、将数据库中的student 展示在http页面 。代码体现 ?

  装备工作建立四个包。

1.dao

package com.aaa.dao;

import com.aaa.entity.Student;

import java.util.List;
import java.util.Map;

public interface IStudentDAO {
    boolean add(Student s);

    boolean delete(int id);
    boolean update(Student s);

    Map<String ,Object> getStudent(int id);

    List<Map<String,Object>> getAllStudent();
}

dao.Impl  实现一个 供测试使用。

package com.aaa.dao.Impl;

import com.aaa.dao.IStudentDAO;
import com.aaa.entity.Student;
import com.aaa.util.DBUtil;

import java.util.List;
import java.util.Map;

public class StudentDAOImpl implements IStudentDAO {
    @Override
    public boolean add(Student s) {
        return false;
    }

    @Override
    public boolean delete(int id) {
        return false;
    }

    @Override
    public boolean update(Student s) {
        return false;
    }

    @Override
    public Map<String, Object> getStudent(int id) {
        return null;
    }

    @Override
    public List<Map<String, Object>> getAllStudent() {
        String sql="select * from student  ";
        return   DBUtil.executeQuery(sql);

    }
}

2.entity 实体类

package com.aaa.entity;

public class Student {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Student() {
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ‘}‘;
    }
}

3.封装工具类

package com.aaa.util;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DBUtil {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public  static Connection getConnetion(){
        try {
          return   DriverManager.getConnection("jdbc:mysql://localhost:3306/qy66?characterEnconding=UTF-8","root","root");
        } catch (SQLException e) {
            e.printStackTrace();
        }
       return null;
    }
    public  static boolean executeUpdate(String sql,Object... args){
        Connection con=null;
        PreparedStatement ps=null;

        try {
            con=DBUtil.getConnetion();
            ps=con.prepareStatement(sql);

            for (int i = 0; i <args.length ; i++) {
                ps.setObject(i+1,args[i]);
            }
            int i=ps.executeUpdate();
            return  i>0;

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            close(con,ps,null);
        }
        return  false;
    }

    public static List<Map<String, Object>>  executeQuery(String sql, Object... args){
        Connection con=null;
        PreparedStatement ps=null;
        ResultSet rs=null;

        try {
            con=getConnetion();
            ps=con.prepareStatement(sql);

            for (int i = 0; i <args.length ; i++) {
                ps.setObject(i+1,args[i]);
            }
           rs=ps.executeQuery();

            List<Map<String,Object>>list=new ArrayList<>();

            int count=rs.getMetaData().getColumnCount();

            while (rs.next()){

                Map<String,Object>map= new HashMap<>();

                for (int i = 0; i < count; i++) {
                    String name = rs.getMetaData().getColumnLabel(i + 1);
                    map.put(name,rs.getObject(name));
                }
                list.add(map);
            }
            return list;

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            close(con,ps,rs);
        }
        return null;
    }

    private static void close(Connection con, PreparedStatement ps, ResultSet rs) {
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

4.servlet 测试。

package com.aaa.servlet;

import com.aaa.dao.IStudentDAO;
import com.aaa.dao.Impl.StudentDAOImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@WebServlet("/666") //虚拟路径 不用再配置xml文件  快捷
public class HttpServletDemo extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取数据库中的数据
        IStudentDAO dao=new StudentDAOImpl();
        List<Map<String, Object>> list = dao.getAllStudent();

       /*
            2.请求共享数据 就是需要servlet展示什么数据
            req.setattribute("01",list)  展示list数据 名字叫01【关键字的作用】 因为这种文件可能
            会有很多  方便servlet找的到  我们所需要的JSP文件
         */
        req.setAttribute("01",list);

        //3.请求转发到某个JSP  3.1 新建JSP文件 day01.jsp
        req.getRequestDispatcher("day01.jsp").forward(req,resp);
    }
}

5.JSP 代码部分?

<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/4/15
  Time: 22:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
    <table border="1" cellspacing="0">
        <tr>
            <th>id</th>
            <th>name</th>
            <th>age</th>
        </tr>
                <!--1. 在JSP中获取数据-->
                <!--6.a:注意JSP写在 web目录下  b:lib目录建立在 WEB-INF下-->
        <% List<Map<String,Object>>list=(List<Map<String,Object>>)request.getAttribute("01");%> <!-- 2.强制装换-->

        <%     for (Map map:list) {      %>  <!--3. java 代码在JSP中书写方式  for循环  获得每一列中的数据     -->
        <tr>
            <td> <%=map.get("id")%> </td>   <!-- 5.‘=‘等于号 是将java代码显示在 网页上-->
            <td> <%=map.get("name")%>> </td>
            <td> <%=map.get("age")%>> </td>
        </tr>

        <%  }  %> <!--4. for循环的结尾-->
    </table>
</body>
</html>

  

原文地址:https://www.cnblogs.com/ZXF6/p/10714173.html

时间: 2024-11-10 13:36:48

Javaweb项目 利用JSP响应浏览器的相关文章

JavaWeb项目放弃jsp?为什么要前后端解耦?为什么要前后端分离?

前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路. 核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互. 名词解释:在互联网架构中,web服务器:一般指像nginx,ap

JAVAWEB项目报&quot;xxx响应头缺失“漏洞处理方案

新增一个拦截器,在拦截器doFilter()方法增加以下代码 public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { //增加响应头缺失代码 HttpServletRequest req=(HttpServletRequest)request; HttpServletResponse res=(Ht

【转载】 JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要动静分离?

转载至[http://blog.csdn.net/piantoutongyang/article/details/50878214],仅供自己参考. 看了他的整篇文章,整理出下面的重点: 使用jsp的痛点: 1.jsp上动态资源和静态资源全部耦合在一起,服务器压力大,因为服务器会收到各种静态资源的http请求,动态代码的等等,除非你使用nginx. 万一你的java代码出现了bug,你的页面是显示不出来的,直接蹦到了5xx页面,用户体验极差. (现在javaWeb项目业界的标准是nginx+to

【转载】java前后端 动静分离,JavaWeb项目为什么我们要放弃jsp?

原文:http://blog.csdn.net/piantoutongyang/article/details/50878214 今天看到两篇文章,讲解 为什么web开发启用jsp,确实挺有道理,整理如下: 使用jsp的痛点: 1.jsp上动态资源和静态资源全部耦合在一起,服务器压力大,因为服务器会收到各种静态资源的http请求,动态代码的等等,除非你使用nginx. 万一你的java代码出现了bug,你的页面是显示不出来的,直接蹦到了5xx页面,用户体验极差. (现在javaWeb项目业界的标

学习JavaWeb项目开发需要掌握的技术

武汉java培训学习JavaWeb项目开发需要掌握的技术,国内外信息化建设已经进入基于Web应用为核心的阶段, java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.概括一下,实施Java的WEB项目需要掌握的技术如下:Java语言面向对象分析设计思想设计模式和框架结构XML语言网页脚本语言数据库应用服务器集成开发环境下面我们具体地看每个技术.1.Java语言Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.

Javaweb项目开发的前后端解耦的必要性

JavaWeb项目为何我们要放弃jsp?为何要前后端解耦?为何要动静分离? 使用jsp的痛点: 1.jsp上动态资源和静态资源全部耦合在一起,服务器压力大,因为服务器会收到各种静态资源的http请求,动态代码的等等,除非你使用nginx. 万一你的java代码出现了bug,你的页面是显示不出来的,直接蹦到了5xx页面,用户体验极差. (现在javaWeb项目业界的标准是nginx+tomcat,动静分离,请求先到nginx,所有的静态资源请求全部交给nginx,动态资源全部给tomcat,此外n

手把手教你做JavaWeb项目:登录模块

现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用户的身份,判断用户是否是本站的会员,只有会员才能访问当前系统 登录的实现步骤: 1.用户填写账号和密码,提交到后台2.后台获取到账号和密码后,将其发送到数据库中进行查询3.查询结果如果为null,说明用户填写的账号或者密码有误,应该回到登录页面并提示用户重新输入4.查询结果如果不为null,说明用户

JavaEE——Intellij Idea 创建JavaWeb项目

原文:JavaEE--Intellij Idea 创建JavaWeb项目 折腾Tomcat折腾了两个晚上,第一个晚上怎么都进不了Tomcat的首页,第二个晚上进去了,但是新建的Web项目,在浏览器中运行,总是 Error on Apache Tomcat: The requested resource is not available  坑爹!!!!. 首先我要说一点,在IntelliJ IDEA里面“new Project”就相当于我们eclipse的“workspace”,而“new Mod

Javaweb项目链接sqlserver 2008R2时出现的一系列的错误

好久没有弄java,玩eclipse了,最近因为小小的原因,参加一个比赛,不得不把javaweb的东西又捡起来,所以不熟悉,再加上之前链接数据库都是用Oracle的,现在公司的电脑上又只是安装了sqlserver 2008R2,所以就试着,开发项目链接sqlserver 2008R2.从昨天晚,到今天晚,终于算是搞定了一系列的问题,当页面显示出来的一刹那,好开心.人生就像打怪兽,就得一关一关地过.仅此,记录一下,辛苦的这些岁月,这活在当下的大好青春. 01 五月 28, 2014 9:21:02