JavaWeb小白_servlet + ajax

最近在学习java,按照书上的例子尝试做一个前后台的web项目练习小程序。在这里记录一下我目前理解的javaweb项目制作的步骤和注意事项。如果有不妥的地方欢迎大家指正。

以查询商品列表为例:

 

第一步:分析具体问题,明确需求,建立数据库和数据表

根据具体的实际情况进行分析并确定对象和字段,根据对象建表。

我使用的是oracle,在Oracle数据库中建立T_MC表用来展示商品的详细信息,建立T_MC_TYPE表示商品的类型信息。

T_MC建表信息:

 T_MC表中数据信息:

T_MC_TYPE建表信息:

T_MC_TYPE表中数据信息:

 注意:建表时表名称和字段名称尽量使用大写英文。我当时使用的是小写,最后查表的时候还要给表名和字段名加上引号,导致sql语句看起来很混乱。

 

 

 

 

第二步:建立javaweb程序,明确项目文件的组织结构

1.建立 Dynamic Web project,命名为OnlineShop

 

 

2.在项目的二级目录添加src文件夹用来放.java文件,检查是否存在web.xml文件,

如果没有就右键项目名称--ava EE Tools--Generate Deployment descriptor stub

 

3.介绍一下目前使用到的文件夹:

1).src文件夹:放.java文件

2).WebContent--WEB-INF-lib文件夹:存放外部引用的jar包

注意,引用jar包不仅要把jar包存放在lib文件下,还要在Java Build path中添加勾选。

步骤:右击项目-Properties-Java Build Path。点击Libraries-Add External JARs...在选择项目中要用的jar包。然后点击

Order and Export勾选刚才添加的jar包。这样就可以在项目中使用这个jar包了。

 

 

 

 

 

第三步:定义数据传输/表现层对象(DTO/VO)

根据数据库中的数据表建立相关的类

1.建立MC.java

 

 

 

 

 

第四步:定义数据层操作接口(DAO接口)和实现类

DAO是数据访问对象,这里的数据层操作接口主要用于为上层的服务层接口提供对应的操作方法,使得上层逻辑可较快捷方便地访问底层数据库表。

1.MC的DAO接口McDAO.java(练习中只使用了前两个方法)

 

 2.DAO接口的实现McDAOImpl.java(练习中只使用了前两个方法)

package com;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/*
*描述:通用商品信息访问接口实现类
*/
public class McDAOImpl implements McDAO{
private static McDAOImpl mcDAOImpl = new McDAOImpl();
private static final int PAGESIZE = 10;
private McDAOImpl(){}
public static McDAOImpl getInstance() {
return mcDAOImpl;
}
@Override
public int[] getResult(String nmaxId, String nminId, String keywords) {//根据指定的商品编号范围和关键字查询并返回商品编号列表
  List<Mc> mcList = selectMc(nmaxId, nminId, keywords, 0);
  int recodeTotal = mcList.size();
  int pageTotal = 0;
  if(recodeTotal == 0){
  pageTotal=0;
}else {
  pageTotal = (recodeTotal-1)/PAGESIZE +1;
}
  return new int[]{recodeTotal,pageTotal};
}

@Override
public List<Mc> selectMc(String nmaxId, String nminId, String keyword,int pageNum) {//返回指定的商品信息列表,并指定页码用于前台显示
  ConnectJDBC connectJDBC = new ConnectJDBC();
  List<Mc> mclisList=new ArrayList<Mc>();
  try {
    Connection conn = connectJDBC.getODBConnectione();
    String sqlString = "SELECT T1.NID NID,SIMG,T1.SNAME ,T1.SNAME SNAME,NPRICE,SMCTAG,T2.SNAME MAXTYPE,T3.SNAME MINTYPE,DCDATE,SDESCRIPTION "
      + "FROM T_MC T1,T_MC_TYPE T2,T_MC_TYPE T3 WHERE T1.NMAXID=T2.NID AND T1.NMINID=T3.NID";
    if (nmaxId !=null && !"0".equals(nmaxId)&& !"".equals(nmaxId)) {
      sqlString = sqlString +" AND T1.NMAXID="+nmaxId;
    }
    if (nminId !=null && !"0".equals(nminId)&& !"".equals(nminId)) {
      sqlString = sqlString +" AND T1.NMINID="+nminId;
    }

    System.out.println("Here1:"+sqlString);
    ResultSet resultSet = null;
    PreparedStatement pStmt = null;
    pStmt = conn.prepareStatement(sqlString);
    resultSet = pStmt.executeQuery();
    while (resultSet.next()) {
      String vnid=resultSet.getString("nid");
      String vsimg=resultSet.getString("simg");
      String vsname=resultSet.getString("sname");
      String vnprice=resultSet.getString("nprice");
      String vsmcTag=resultSet.getString("smcTag");
      String vmaxType=resultSet.getString("maxType");
      String vminType=resultSet.getString("minType");
      String vdcDate=resultSet.getString("dcDate");
      if (vdcDate !=null && !"".equals(vdcDate)) {
        vdcDate = vdcDate.substring(0,19);
      }
      String vsdescription = resultSet.getString("sdescription");
      Mc mc = new Mc();
      mc.setNid(vnid);
      mc.setSimg(vsimg);
      mc.setSname(vsname);
      mc.setNprice(vnprice);
      mc.setSmcTag(vsmcTag);
      mc.setNmaxId(vmaxType);
      mc.setNminId(vminType);
      mc.setDcDate(vdcDate);
      mc.setSdescription(vsdescription);
      mclisList.add(mc);
    }

    resultSet.close();
    pStmt.close();
    conn.close();
  } catch (Exception e) {
    e.printStackTrace();
  }  
  return mclisList;
}

@Override
public Mc selectSingleMc(int nid) {//根据商品编号得到一种商品信息
  ConnectJDBC connectJDBC = new ConnectJDBC();
  Connection conn;
  Mc mc = new Mc();
  try {
    conn = connectJDBC.getODBConnectione();
    String sql = "SELECT * FROM T_MC WHERE NID=?";
    PreparedStatement pStmt = null;
    ResultSet resultSet = null;
    pStmt=conn.prepareStatement(sql);
    pStmt.setInt(1, nid); //设置sql中的?的值
    resultSet = pStmt.executeQuery();
    if (resultSet.next()) {
      mc.setNid(nid +"");
      mc.setSname(resultSet.getString("sname"));
      mc.setSdescription(resultSet.getString("sdescription"));
      mc.setNprice(resultSet.getString("nprice"));
      mc.setSimg(resultSet.getString("simg"));
      mc.setSmcTag(resultSet.getString("smcTag"));
      String dcDate = resultSet.getString("dcDate");
      if (dcDate !=null && !"".equals(dcDate)) {
        dcDate=dcDate.substring(0,19);
      }
      mc.setDcDate(dcDate);
      mc.setNmaxId(resultSet.getString("nmaxId"));
      mc.setNminId(resultSet.getString("nminId"));
    }
    resultSet.close();
    pStmt.close();
    conn.close();
  } catch (Exception e) {
    e.printStackTrace();
  }
  return mc;
}

 

@Override
public boolean updateMc(Mc mc) {//更新指定的商品信息
boolean isSuccess = true;
ConnectJDBC connectJDBC = new ConnectJDBC();
try {
Connection conn = connectJDBC.getODBConnectione();
String sql = "UPDATE T_MC SET SNAME=?,SDESCRIPTION=?,NPRICE=?,SIMG=?,SMCTAG=?,DCDATE=?,NMAXID=?,NMINID=? WHERE NID=?";
PreparedStatement pStmt = conn.prepareStatement(sql);
pStmt.setString(1, mc.getSname());
pStmt.setString(2,mc.getSdescription());
pStmt.setString(3,mc.getNprice());
pStmt.setString(4,mc.getSimg());
pStmt.setString(5, mc.getSmcTag());
pStmt.setString(6, mc.getDcDate());
pStmt.setString(7, mc.getNmaxId());
pStmt.setString(8, mc.getNminId());
pStmt.setInt(9,Integer.parseInt(mc.getNid()));
isSuccess=pStmt.execute();
pStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
isSuccess = false;
}
return isSuccess; //返回是否保存成功
}

@Override
public boolean insertMc(Mc mc) { //添加新的商品信息
boolean isSuccess = true;
ConnectJDBC connectJDBC = new ConnectJDBC();
try {
Connection conn = connectJDBC.getODBConnectione();
String sql = "INSERT INTO T_MC(SNAME,SDECRIPTION,NPRICE,SIMG,SMCTAG,DCDATE,NMAXID,NMINID,NID) VALUES(?,?,?,?,?,?,?,?,?)";
PreparedStatement pStmt = conn.prepareStatement(sql);
pStmt.setString(1, mc.getSname());
pStmt.setString(2,mc.getSdescription());
pStmt.setFloat(3,Float.parseFloat(mc.getNprice()));
pStmt.setString(4,mc.getSimg());
pStmt.setString(5, mc.getSmcTag());
pStmt.setString(6, mc.getDcDate());
pStmt.setString(7, mc.getNmaxId());
pStmt.setString(8, mc.getNminId());
pStmt.setInt(9,Integer.parseInt(mc.getNid()));
isSuccess=pStmt.execute();
pStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
isSuccess = false;
}
return isSuccess; //返回是否插入成功
}

@Override
public boolean deleteMc(int nid, String contextPath) { //删除商品信息
boolean isSuccess = true;
ConnectJDBC connectJDBC = new ConnectJDBC();
try {
Connection conn = connectJDBC.getODBConnectione();
String sql = "delete from T_MC where NID ="+nid;
PreparedStatement pStmt = conn.prepareStatement(sql);
isSuccess=pStmt.execute();
pStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
isSuccess = false;
}
return isSuccess; //返回是否删除成功
}

@Override
public void deleteMcSimg(int nid) {//删除商品图片信息
ConnectJDBC connectJDBC = new ConnectJDBC();
try {
Connection conn = connectJDBC.getODBConnectione();
String sql = "UPDATE T_MC SET SMIG=? WHERE NID=?";
PreparedStatement pStmt = conn.prepareStatement(sql);
pStmt.setString(1, "");
pStmt.setInt(2, nid);
pStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

 

 

 

 

 

第五步:定义业务层操作接口(Service)和实现类

1.以商品查询接口为例(QueryGoodsServlet.java)

 

 

2.在写完servlet后需要在web.xml中配置servlet的路径

<servlet>
<servlet-name>QueryGoodsServlet</servlet-name>          //servlet的类名
<servlet-class>com.QueryGoodsServlet</servlet-class>        //servlet真实的路径
</servlet>
<servlet-mapping>
<servlet-name>QueryGoodsServlet</servlet-name>          //servlet的类名
<url-pattern>/QueryGoodsServlet</url-pattern>            //servlet请求的路径
</servlet-mapping>

 

 

 

 

 

第六步:编写前端页面(html+js),在js中使用ajax请求数据

 1.html文件

 

 

2.js文件以及ajax请求

ajax的url参数就是在web.xml文件的<url-pattern>中配置的路径

 

 

3.最后的请求参数和页面效果如下图

返回参数:

页面效果:

 

转载于:https://www.cnblogs.com/-Chang/p/9492352.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值