Java遇见HTML的6篇文章技术较老只是在熟悉java基础知识和了解mvc模型思想
model1思想:
简单的说就是浏览器请求jsp,jsp请求JavaBean,JavaBean调用数据库获取属性值返回给jsp,jsp再响应给浏览器。
model2思想:
引入MVC思想,M是model(JavaBean),V是view(Jsp),C是controller(servlet)
1、浏览器请求JSP,提交到servlet中
2、servlet实例化JavaBean对象,并调用JavaBean对象中set和get方法
3、JavaBean从DB数据库中读取值
4、获取值后返回给servlet再跳转到jsp页面响应给浏览器
实现一个小例子:
前端页面做的很丑,不用关注。
需求如下:
1、商品列表页:展示所有商品,可以点击商品查看商品详情,跳转到商品详情页
2、商品详情页:输入购买商品数量,添加到购物车,跳转到购物车页面(在商品详情页同时展示浏览器过的前5条商品信息)
3、购物车页面:查看添加到购物车中的商品信息,购买商品总金额,在购物车页面可以删除添加到购物车中的商品。
梳理需求:
1、需要三个jsp页面,分别是商品列表页、商品详情页、购物车页面
2、需要配置查询数据库信息类DBHelper、商品实体类Items、购物车类Cart实现添加购物车、删除、计算商品总额;ItemsDao类实现从数据库获取所有商品信息、根据商品id查询商品详情、实现展示前5条浏览记录;cartservlet类实现与jsp页面交互的商品增加删除以及页面跳转的功能。
第一步:商品实体类Items:
package com.zhidaoauto.Entity;
import java.util.Objects;
//商品实体类
public class Items {
private int id;
private String name;
private int price;
private int number;
private String city;
private String picture;
public Items(){
}
public Items(int id,String name,int price,int number,String city,String picture){
this.id=id;
this.name=name;
this.price=price;
this.number=number;
this.city=city;
this.picture=picture;
}
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 getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
@Override
public String toString() {
return "Items{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
", number=" + number +
", city='" + city + '\'' +
", picture='" + picture + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Items items = (Items) o;
return id == items.id &&
price == items.price &&
number == items.number &&
Objects.equals(name, items.name) &&
Objects.equals(city, items.city) &&
Objects.equals(picture, items.picture);
}
@Override
public int hashCode() {
return Objects.hash(id, name, price, number, city, picture);
}
}
该类中重写了equals、hashCode方法,是为了防止重复添加相同商品到购物车时,购物车当成不同商品的问题,这样重复添加相同商品到购物车只会商品数量增加,商品不会增加。
第二步:DBHelper类配置连接数据库,其实可以使用mybatis去连接数据库,本文讲的方法有些老大家可以用mybatis去实现连接数据库和写sql语句查询数据库表。
package com.zhidaoauto.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBHelper {
private static final String driver="com.mysql.cj.jdbc.Driver";
private static final String url="jdbc:mysql://localhost:3306/dbgirl?useUnicode=true&characterEncoding=UTF-8";
private static final String username="root";
private static final String password="baoxian_admin";
private static Connection conn=null;
//静态代码块负责加载驱动
// static {
// try{
// Class.forName(driver);
// }catch (Exception e){
// e.printStackTrace();
// }
// }
//连接数据库
public static Connection getConn() throws SQLException {
if (conn==null){
conn= DriverManager.getConnection(url,username,password);
return conn;
}
return conn;
}
public static void main(String[] args) {
try {
Connection connection=getConn();
if (connection!=null){
System.out.println("连接成功");
}else {
System.out.println("连接失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
第三步:ItemsDao类,商品业务类,从数据库中查找到商品信息,存到商品实体类中
主要用到getAllItems、getItemDetail、getViewlist方法
package com.zhidaoauto.dao;
import com.zhidaoauto.Entity.Items;
import com.zhidaoauto.util.DBHelper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/*
商品业务类,从数据库中查找到商品信息,存到商品实体类中
*/
public class ItemsDao {
//往数据库表items中插入数据
public void addItems(){
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
conn=DBHelper.getConn();
String sql="INSERT into item (id,name,price,number,city,picture) VALUES(6,'鼠标垫',20,3,'北京','5555');";
ps=conn.prepareStatement(sql);
boolean flag=ps.execute();
if (flag){
System.out.println("添加成功");
}else {
System.out.println("添加失败,查看数据库表数据是否添加成功");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Items> getAllItems(){
Connection conn= null;
PreparedStatement ps=null;
ResultSet rs=null;
ArrayList<Items> list=new ArrayList<Items>();
try {
conn=DBHelper.getConn();
String sql="select * from item";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()){
Items items=new Items();
items.setId(rs.getInt("id"));
items.setName(rs.getString("name"));
items.setNumber(rs.getInt("number"));
items.setPrice(rs.getInt("price"));
items.setCity(rs.getString("city"));
items.setPicture(rs.getString("picture"));
list.add(items);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return list;
}
public Items getItemDetail(int id){
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
conn=DBHelper.getConn();
String sql="select * from item where id="+id;
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()){
Items items=new Items();
items.setId(rs.getInt("id"));
items.setName(rs.getString("name"));
items.setNumber(rs.getInt("number"));
items.setPrice(rs.getInt("price"));
items.setCity(rs.getString("city"));
items.setPicture(rs.getString("picture"));
return items;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}finally {
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return null;
}
//获取最近浏览的前5条信息
public ArrayList<Items> getViewlist(String list){
ArrayList<Items> itemslist=new ArrayList<Items>();
if (list!=null && list.length()>0){
String[] s=list.split(":");
if (s.length>=5){
for (int i=s.length-1;i>=s.length-5;i--){
int id=Integer.valueOf(s[i]);
itemslist.add(getItemDetail(id));
}
}else {
for (int j=s.length-1;j>=0;j--){
int id=Integer.valueOf(s[j]);
itemslist.add(getItemDetail(id));
}
}
return itemslist;
}else {
return null;
}
}
public static void main(String[] args) {
ItemsDao itemsDao=new ItemsDao();
// ArrayList<Items> list=itemsDao.getAllItems();
// for (Items items:list){
// System.out.println(items.getId()+" "+
// items.getNumber()+" "+
// items.getName()+" "+
// items.getCity()+" "+
// items.getPicture()+" "+
// items.getPrice());
// }
//
Items items=itemsDao.getItemDetail(1);
System.out.println(items.toString());
}
}