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>
Javaweb项目 利用JSP响应浏览器的更多相关文章
- 如何开发简单的javaweb项目,jsp+javabean+servlet
一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并配置apache-tomcat(服务器). 4.下载MySQL(数据库). 5.下载Navicat for M ...
- javaweb项目中jsp的from表单提交action内容与web.xml的servlet-mapping对应
login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...
- JAVAWEB项目报"xxx响应头缺失“漏洞处理方案
新增一个拦截器,在拦截器doFilter()方法增加以下代码 public void doFilter(ServletRequest request, ServletResponse response ...
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
1.服务器(Server)响应,浏览器(Brower)请求: 对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应.在JavaWeb项目中,大致包含.java文件的数据处理模块,和 ...
- 【转载】java前后端 动静分离,JavaWeb项目为什么我们要放弃jsp?
原文:http://blog.csdn.net/piantoutongyang/article/details/50878214 今天看到两篇文章,讲解 为什么web开发启用jsp,确实挺有道理,整理 ...
- 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下
- JavaWeb项目在浏览器点击几次就阻塞了
问题描述 在学习JavaWeb项目时,通过IDE启动项目后,在浏览器点击几次页面中的链接就阻塞了,浏览器一直转圈圈无法加载,后台日志也没有输出. 第一次遇见这种情况,没有日志完全无法分析到底是什么问题 ...
- [JavaWeb]利用JSP的编码特性制作免杀后门
利用JSP的编码特性制作免杀后门 这里是借鉴了Y4stacker师傅的thinkings 待解决的问题 JSP解析 JSP"乱码"为什么还能被识别 "乱码"的J ...
- 利用Jenkins实现JavaWeb项目的自动化部署
修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上.笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上.我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去 ...
随机推荐
- centos-linux入门笔记
一.linux的用户 linux的用户和windwos差不多,分为管理员用户和普通用户. 普通用户:权限没那么高而已. 管理员用户:在linux中就是root用户,所拥有的权限是最高的. 二.linu ...
- JavaScript 代码简洁之道
摘要: 可以说是<Clean Code>的JS代码示例了,值得参考. 原文:JavaScript 代码简洁之道 作者:缪宇 Fundebug经授权转载,版权归原作者所有. 测试代码质量的唯 ...
- Android 异步框架 RxJava2
观察者模式的概念 RxJava是android的异步框架,官方介绍是可观测的序列,组成异步基于事件程序的库.特点是观察者模式,基于事件流的链式调用,随着异步操作调度过程复杂的情况下,程序逻辑也变得越来 ...
- c/c++ 多线程 thread_local 类型
多线程 thread_local 类型 thread_local变量是C++ 11新引入的一种存储类型. thread_local关键字修饰的变量具有线程周期(thread duration), 这些 ...
- chrome打开收藏夹的网站在新的标签页
chrome浏览器在新的标签页打开收藏夹的网址,现在设置不了,而且右键,在新标签页中打开有点烦..下面说说直接打开的方式. 方法1: 鼠标滚轮,直接点击收藏夹的网址,即可 方法2: ctrl + 鼠标 ...
- spring3:多数据源配置使用
0. properties ####################################mysql########################################### d ...
- 本地windows下搭建git的本地服务器
本地windows下搭建git的本地服务器 准备工作: 本地安装java环境,配置环境变量(略) 下载gitblit文件,百度一大堆 开始第一步: 减压gitblit压缩包到某个目录下,比如我在:H: ...
- 英语口语练习系列-C19-喜欢某人
简单词汇 1. chair [tʃeə(r)] n. 椅子 chair = ch + air拼读的时候ch发音以及air发音 [ ] sit on a chair 坐在椅子上 [ ] a table ...
- CSAPP:第八章 异常控制流2
CSAPP:第八章 异常控制流2 关键点:进程控制.信号 8.4 进程控制8.5 信号 8.4 进程控制 Unix提供了大量从C程序中操作进程的系统调用.8.4.1 获取进程ID 每个进程都有一 ...
- .net core iis配置
微软官方教程: https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x 在vs中创建.net cor ...