mvc模式test

项目结构

Book.java

package beans;
public class Book {
    private Integer id;
    private String name;
    private double price;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
}


BookDao.java

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.resource.cci.ResultSet;

import beans.Book;

public class BookDao {
@SuppressWarnings({ "rawtypes", "unchecked" })
public ArrayList queryBookById(String id) {
	Connection conn=null;
	ArrayList books=new ArrayList();
try {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
		}
		@SuppressWarnings("unused")
		String url="jdbc:mysql://localhost:3306/books?useUnicode=true&charaterEncoding=UTF-8";
		conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/books","root","123456");
		String sql="select * from book where id=?";
		PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, id);
		ResultSet rs=(ResultSet) ps.executeQuery();
		while(rs.next()){
			Book book=new Book();
			book.setId(rs.getInt(1));
			book.setName(rs.getString(2));
			book.setPrice(rs.getDouble(3));
			books.add(book);
		}
		rs.close();
		ps.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}finally {
		try{
			if(conn!=null){
				conn.close();
				conn=null;
			}
		}catch(Exception e){}
	}
	return books;
}
}

BookServlet.java

package servlet;


import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.BookDao;

@SuppressWarnings("serial")
public class BookServlet extends HttpServlet {
	@SuppressWarnings("rawtypes")
	public void servlet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String id =request.getParameter("id");
		BookDao dao=new BookDao();
		ArrayList books=dao.queryBookById(id);
		request.setAttribute("books", books);
		ServletContext application =this.getServletContext();
		RequestDispatcher rd=application.getRequestDispatcher("/showbook.jsp");
		rd.forward(request, response);	
	}

}

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>  
    <title>查询书籍系统</title>
</head>
<body>
    <form action="servlet/BookServlet" method="post">
请输入id: <input type="text" name="id">
   <input type="submit" value="查询">
    </form>
        </body>
</html>

showBook.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="dao.BookDao" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="beans.Book" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>书籍信息</title>
</head>  
<body>
<%
     ArrayList books=(ArrayList)request.getAttribute("books");
%>
<table border="2">
<tr>
<td>id</td>
<td>name</td>
<td>price</td>
</tr>
<%
for (int i = 0;i < books.size();i++)
{
Book book = (Book)books.get(i);
%>
<tr>
<td><%=book.getId()%></td>
<td><%=book.getName()%></td>
<td><%=book.getPrice()%></td>
</tr>
<% 
} 
%>
</table>
</body>
</html>

books.sql

/*
 Navicat Premium Data Transfer

 Source Server         : 11
 Source Server Type    : MySQL
 Source Server Version : 80030
 Source Host           : localhost:3306
 Source Schema         : books

 Target Server Type    : MySQL
 Target Server Version : 80030
 File Encoding         : 65001

 Date: 05/12/2023 21:02:10
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `id` int NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `price` double NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, '西游记', 100);

SET FOREIGN_KEY_CHECKS = 1;

mysql.jar包下载

MySQLjar包官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

--更新于12-6

本文仅仅用了测试,会出现报错!!!

如报错HTTP method POST is not supported by this URL

或者The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files等

经过一晚上测试,发现是由于自己book.java文件使用私有属性,以及在getid方法中出现于bookdao.java的类型并不匹配,加上EE5的library的导入,最后完成调试!

下面是改后的结构

数据库

数据导入用的是MySQL的workbench,可复制下来,直接在workbench中运行即可

-- MySQL dump 10.13  Distrib 8.0.32, for Win64 (x86_64)
--
-- Host: localhost    Database: book
-- ------------------------------------------------------
-- Server version	8.0.32

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `book`
--

DROP TABLE IF EXISTS `book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `book` (
  `id` varchar(45) NOT NULL,
  `name` varchar(45) DEFAULT NULL,
  `price` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `book`
--

LOCK TABLES `book` WRITE;
/*!40000 ALTER TABLE `book` DISABLE KEYS */;
INSERT INTO `book` VALUES ('1','水浒传',88.8);
/*!40000 ALTER TABLE `book` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2023-12-06  1:54:04

数据库数据完成后,进行book.java的修改

package beans;

public class Book {
	String id;
	String name;
	float price;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
}
 
 

 重启tomcat6.0

 

最后成功

在今晚test时候发现的问题

 注意变量的类型,也可以继续使用id int ,price double型

重新生成方法

select all 选择public,生成

代码

package beans;

public class Book {
	int id;
	String name;
	double price;
	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 double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}

}
 
 

修改bookdao.java 

重启后访问报错

HTTP Status 500 - javax.servlet.ServletException: java.lang.NoSuchMethodError: beans.Book.getId()Ljava/lang/String; 

(有待解决)

没有该方法调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222239.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跨端的三种方案原理和对比(WebView,ReactNative,Flutter)

一、定义 WebView WebView是什么&#xff1f; 答&#xff1a; 第一代跨平台框架&#xff0c;代表者为&#xff1a;PhoneGap、微信小程序。 WebView标签是一种用于在网页中嵌入浏览器窗口的HTML元素。它的底层原理是通过原生平台提供的浏览器引擎来实现网页的渲染和交互。 …

虚拟人如何在线下活动实现实时交互?动捕设备或为最优解

随着时代的进步&#xff0c;虚拟人凭借其打破时空界限、新颖差异化视觉效果等特点&#xff0c;在发布会、峰会等线下活动中发挥着重要作用&#xff0c;想要实现虚拟人在线下活动中实时交互&#xff0c;使用动捕设备可以让虚拟人化身虚拟主持人、虚拟主播、虚拟舞者演员等。 虚拟…

Octave安装与教程

Octave是一种编程语言&#xff0c;旨在解决线性和非线性的数值计算问题。Octave为GNU项目下的开源软件&#xff0c;早期版本为命令行交互方式&#xff0c;4.0.0版本发布基于QT编写的GUI交互界面。Octave语法与Matlab语法非常接近&#xff0c;可以很容易的将matlab程序移植到Oct…

mysql pxc高可用离线部署(三)

pxc学习流程 mysql pxc高可用 单主机 多主机部署&#xff08;一&#xff09; mysql pxc 高可用多主机离线部署&#xff08;二&#xff09; mysql pxc高可用离线部署&#xff08;三&#xff09; mysql pxc高可用 跨主机部署pxc 本文使用docker进行安装&#xff0c;主机间通过…

leetcode:LCR 122. 路径加密(python3解法)

难度&#xff1a;简单 假定一段路径记作字符串 path&#xff0c;其中以 "." 作为分隔符。现需将路径加密&#xff0c;加密方法为将 path 中的分隔符替换为空格 " "&#xff0c;请返回加密后的字符串。 示例 1&#xff1a; 输入&#xff1a;path "a.a…

Cmake时遇到Could Not find CURL问题

操作系统&#xff1a;Ubuntu 20.04 cmake编译的时候&#xff0c;出现下述错误Could Not find CURL。 结合上述错误&#xff0c;又去看了CMakelist文件&#xff0c;看到CURL的最小版本需要7.28.0。 首先确认一下自己的curl是否安装&#xff0c;版本号是多少&#xff0c;结果如下…

【Spring Boot 】Spring Boot 常用配置总结

文章目录 前言1.多环境配置application.propertiesapplication.yaml 2.常用配置3.配置读取4.自定义配置 前言 在涉及项目开发时&#xff0c;通常我们会灵活地把一些配置项集中在一起&#xff0c;如果你的项目不是很大的情况下&#xff0c;那么通过配置文件集中不失为一个很好的…

Linux(ubuntu)利用ffmpeg+qt设计rtsp_rtmp流媒体播放器(完全从0开始搭建环境进行开发)

一、前言 从0开始搭建Linux下Qt、ffmpeg开发环境。 从安装虚拟机开始、安装Linux(Ubuntu)系统、安装Qt开发环境、编译ffmpeg源码、配置ffmpeg环境、编写ffmpeg项目代码、完成项目开发。 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开…

ROS 静态坐标转换

在 ROS 中&#xff0c;坐标变换&#xff08;TF&#xff1a;Transform&#xff09;它允许机器人系统中的各个部分使用不同的坐标系&#xff0c;并通过转换关系进行通信和协作。 静态坐标变换是指两个坐标系之间的相对位置关系是固定的&#xff0c;不会随时间改变。 例如&#…

Elasticsearch 入门(postman学习)-01

HTTP-索引-创建 对比关系型数据库&#xff0c;创建索引就等同于创建数据库。 在 Postman 中&#xff0c;向 ES 服务器发 PUT 请求 &#xff1a; http://127.0.0.1:9200/shopping 请求后&#xff0c;服务器返回响应&#xff1a; {"acknowledged": true,//响应结果&…

信息化,数字化,智能化是3种不同概念吗?与机械化,自动化矛盾吗?

先说结论&#xff1a; 1、信息化、数字化、智能化确实是3种不同的概念&#xff01; 2、这3种概念与机械化、自动化并不矛盾&#xff0c;它们是制造业中不同发展阶段和不同层次的概念。 机械化&#xff1a;是指在生产过程中使用机械技术来辅助人工完成一些重复性、单一性、劳…

条件概率公式、全概率公式、贝叶斯公式

条件概率公式 设A、B为两个事件&#xff0c;为事件A发生的概率&#xff0c;为事件A和B同时发生的概率&#xff0c;并且&#xff0c;那么 称为A事件发生的条件下事件B发生的条件概率。 全概率公式 其中&#xff0c;A为一个事件&#xff0c;为样本空间的一个划分。 公式表达的…

binder线程安全即读取线程池部分剖析

背景 hi,粉丝朋友们&#xff1a; 大家好&#xff01;近期有学员在学习binder过程中向我提出了2个疑问&#xff1a; 1、binder是否线程安全的&#xff0c;即同一个binder的服务端方法是不是同一个时间点&#xff0c;只有一个执行者&#xff1f; 2、binder的读取线程是怎么启动的…

RetsCloud AppLink适用的场景有哪些?

Applink是什么产品&#xff1f; AppLink是一款由RestCloud公司推出的超级应用连接器。无需开发&#xff0c;零代码&#xff0c;即可快速打通应用系统之间的数据。通过流程搭建&#xff0c;可以智能、高效地完成自动化任务&#xff0c;在大大提高工作效率的同时&#xff0c;也降…

状态设计模式

package com.jmj.pattern.state.after;public abstract class LiftState {protected Context context;public void setContext(Context context) {this.context context;}//电梯开启操作public abstract void open();//电梯关闭操作public abstract void close();//电梯运行操…

SystemWeaver—电子电气系统协同研发平台

背景概述 当前电子电气系统在汽车领域应用广泛&#xff0c;其设计整合了多门工程学科&#xff0c;也因系统的复杂性、关联性日益提升&#xff0c;需要其提供面向软件、硬件、网络、电气等多领域交织而导致的复杂系统解决方案。并且随着功能安全、AUTOSAR、SOA、以太网通讯等新要…

python中各式各样的字典操作

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;字典&#xff08;Dictionary&#xff09;是一种强大而灵活的数据结构&#xff0c;它允许你存储和检索键值对。本文将深入探讨Python中各式各样的字典操作&#xff0c;包括基本操作、高级操…

解析与预防:Java中的内存泄漏问题

目录 引言 1. 内存泄漏的定义 2. 内存泄漏的常见原因 2.1 引用保留 2.2 长生命周期的对象持有短生命周期对象的引用 3. 检测内存泄漏的手段 3.1 内存分析工具 3.2 日志和监控 4. 预防内存泄漏的方法 4.1 及时释放资源 4.2 使用弱引用 4.3 避免静态引用 5. 结语 引…

CSS进阶知识点速览2

1 前情回顾 关于选择器进阶、背景色、元素显示模式和css特性的前半部分集中在下面的笔记中&#xff1a; css进阶知识点速览 2 CSS特性 2.1 优先级 特性&#xff1a;不同选择器具有不同的优先级&#xff0c;优先级高的选择器样式会覆盖优先级低选择器样式 优先级公式&#x…

【面试HOT200】二叉树的构建二叉搜索树篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…