一、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. JQuery autocomplete获得焦点触发弹出下拉框

    需求:autocomplete控件,当点击获得焦点的时候也要弹出下拉列表(autocomplete默认是输入之后才会跟随出下拉列表),下面直接贴代码. js代码: $("#customerN ...

  2. 通过hash实现前端路由

    router.js //构造函数 function Router() { this.routes = {}; this.currentUrl = ''; } Router.prototype.rout ...

  3. Chrome 下input的默认样式

    一.去除默认边框以及padding border: none;padding:0 二.去除聚焦蓝色边框 outline: none; 三.form表单自动填充变色 1.给input设置内置阴影,至少要 ...

  4. HTML和CSS前端教程03-CSS文本样式

    目录 1.CSS颜色-建议就用十六进制 2.CSS长度的度量单位-建议就用px 3.CSS文本样式 3.1. 字体属性 3.1. 文本样式 1.CSS颜色-建议就用十六进制 p{ color: #ff ...

  5. 总结:BGP和静态路由并存,达到故障自动倒换的目的。

    总体结论: 在上云的场景中,客户需要本地数据中心到云上VPC,出现网络故障时做到自动倒换,保证业务不中断. 一.客户需求 1.客户有总厂.分厂.总厂是通过专线和VPN连接上云,分厂是通过专线先连接到总 ...

  6. Python 使用Python远程连接并操作InfluxDB数据库

    使用Python远程连接并操作InfluxDB数据库 by:授客 QQ:1033553122 实践环境 Python 3.4.0 CentOS 6 64位(内核版本2.6.32-642.el6.x86 ...

  7. PJSUA2开发文档--第十二章 PJSUA2 API 参考手册

    12 PJSUA2 API 参考手册 12.1 endpoint.hpp PJSUA2基本代理操作.  namespace pj PJSUA2 API在pj命名空间内. 12.1.1 class En ...

  8. 云服务器挂载/dev/vdb1磁盘

    1.首先检查是否有一块硬盘还未被挂载 2.如图所示,vdb还未被使用,开始分配它吧 [root@localhost ~]# fdisk /dev/vdb Command (m for help): n ...

  9. 使用Linq的泛型功能

    泛型数据访问类: 业务抽象类使用数据访问类: 业务类继承业务抽象类: 使用业务类:

  10. android SDK 无法更新

    android-windows-sdk无法更新解决办法:   1.在host文件新增如下配置 (host文件位置:c:\Windows\System32\drivers\etc文件夹下面,用文本编辑器 ...