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());
}
}