一、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>

  

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

  1. 如何开发简单的javaweb项目,jsp+javabean+servlet

    一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并配置apache-tomcat(服务器). 4.下载MySQL(数据库). 5.下载Navicat for M ...

  2. javaweb项目中jsp的from表单提交action内容与web.xml的servlet-mapping对应

    login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...

  3. JAVAWEB项目报"xxx响应头缺失“漏洞处理方案

    新增一个拦截器,在拦截器doFilter()方法增加以下代码 public void doFilter(ServletRequest request, ServletResponse response ...

  4. 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题

    1.服务器(Server)响应,浏览器(Brower)请求: 对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应.在JavaWeb项目中,大致包含.java文件的数据处理模块,和 ...

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

    原文:http://blog.csdn.net/piantoutongyang/article/details/50878214 今天看到两篇文章,讲解 为什么web开发启用jsp,确实挺有道理,整理 ...

  6. 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome

    使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下

  7. JavaWeb项目在浏览器点击几次就阻塞了

    问题描述 在学习JavaWeb项目时,通过IDE启动项目后,在浏览器点击几次页面中的链接就阻塞了,浏览器一直转圈圈无法加载,后台日志也没有输出. 第一次遇见这种情况,没有日志完全无法分析到底是什么问题 ...

  8. [JavaWeb]利用JSP的编码特性制作免杀后门

    利用JSP的编码特性制作免杀后门 这里是借鉴了Y4stacker师傅的thinkings 待解决的问题 JSP解析 JSP"乱码"为什么还能被识别 "乱码"的J ...

  9. 利用Jenkins实现JavaWeb项目的自动化部署

    修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上.笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上.我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去 ...

随机推荐

  1. 浅谈Java虚拟机内存中的对象创建,内存布局,访问定位

    参考于 深入理解Java虚拟机 这里介绍HotSpot虚拟机(自带的虚拟机) 1.对象的创建 对于程序员来说,创建对象的方法: User user1 = new User(); User user2 ...

  2. css中关于table的相关设置

    一.设置好看的单边框表格 1.一种实现方式 分别给table标签和td标签设置不在同一方向的border属性,如下table设置‘左上’边框,td设置‘右下’边框.其他设置方式同样可以实现. tabl ...

  3. 前端入门19-JavaScript进阶之闭包

    声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...

  4. finereport报表--动态格间运算 一

    一.运算符:   ! 绝对值 A2[A2:!1] ;   A2 标示从列A纵向第2单元格开始,!1 表示第1个位置的单元格; [A2:!1] 代表索引,表示从A列纵向开始往下,第1个单元格的位置的索引 ...

  5. Apex 中操作用户和组

    用户和组概述 Salesforce中对于用户的定义主要体现于两个对象:用户(User)和组(Group).组的成员可以是用户也可以是另一个组. Salesforce中的组可以有多种表示方法,比如队列( ...

  6. Android Studio集成Flutter

    首先Flutter中文网教程地址:https://flutterchina.club/get-started/install/ 1.新建环境变量 变量名:PUB_HOSTED_URL 变量值:http ...

  7. 【已解决】报异常:java.lang.ArithmeticException: / by zero

    异常名称如下:java.lang.ArithmeticException: / by zero 原因:当我们定义的被除数为整形时候(short  int  long)会抛出此异常,被除数为整形时不可以 ...

  8. HDFS副本放置策略

    1.第一个副本放置在上传文件的DataNode上,如果是集群外提交,则随机挑选一个磁盘不太满,CPU不太忙的节点. 2.第二个副本放置在与第一个副本不同的机架上. 3.第三个副本放置在与第二个副本同机 ...

  9. centos7防火墙开放端口等命令

    CentOS 7 开放防火墙端口 命令 最近公司新的server要求用CentOS7, 发现以前CentOS 6 系列中的 iptables 相关命令不能用了,查了下,发现Centos 7使用fire ...

  10. python 之 查找某目录中最新的文件

    记录一下这个方法,感觉很有用!>.< import os def find_newest_file(path_file): lists = os.listdir(path_file) li ...