新手小白,首次利用csdn记录学习过程
首次写Javaweb后端
1.数据库建立相关的表
2.建立服务端并且创建相应的工厂
3.通过前端页面建立服务器联系
以建立物资管理系统为例子
前端页面如下:
一.创建数据库表
根据前端信息我们需要建立一张表:
create table tb1_provider(
id char(32) primary key,
name varchar2(50),
address varchar2(50),
postcode number,
tel varchar2(10),
fax varchar2(20),
bankName varchar2(50),
bankNo varchar2(50),
meno varchar2(200)
)
java部分:
先建立分包;
1.拥有接口,对应实现类,还有工厂,这样的好处是他人不会直接通过impl来看实现方法,直接进入工厂,也方便了代码书写。
2.domain建立所需要的属性(私有)
3.servlet实现服务端功能
首先是domain部分代码:
package com.lq.good.provider.domain;
public class Provider {
private String id;
private String name;
private String address;
private int postcode;
private String tel;
private String fax;
private String bankName;
private String bankNo;
private String meno;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getPostcode() {
return postcode;
}
public void setPostcode(int postcode) {
this.postcode = postcode;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getBankNo() {
return bankNo;
}
public void setBankNo(String bankNo) {
this.bankNo = bankNo;
}
public String getMeno() {
return meno;
}
public void setMeno(String meno) {
this.meno = meno;
}
}
然后dao代码:
1.接口dao:
package com.lq.good.provider.dao.dao;
import java.util.List;
import com.lq.good.provider.domain.Provider;
import com.lq.good.user.domain.Dept;
import com.lq.good.user.domain.User;
public interface ProviderDAO {
public boolean add(Provider p);//添加
public List queryAll();//显示
public List queryForPage(int page,int pageSize);//实现下角标页脚传递页数与大小
public int queryForCount();//计算当前所在页数
public boolean delete(String id);//删除
public Provider queryById(String id);//通过id查询
public boolean update(Provider p); //更改
}
2.创建工厂Factory:
package com.lq.good.provider.dao.factory;
import com.lq.good.provider.dao.dao.ProviderDAO;
import com.lq.good.provider.dao.impl.ProviderDAOimpl;
public class ProviderDAOFactory {
public static ProviderDAO getProviderDAO() {
return new ProviderDAOimpl();
}
}
3.实现接口impl
package com.lq.good.provider.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.lq.good.provider.dao.dao.ProviderDAO;
import com.lq.good.provider.domain.Provider;
import com.lq.good.user.domain.User;
import com.lq.good.util.DBUtil;
public class ProviderDAOimpl implements ProviderDAO {
private Connection conn;
private PreparedStatement pst;
private ResultSet rs;
@Override
public boolean add(Provider p) {
String sql="insert into tb1_provider values(?,?,?,?,?,?,?,?,?)";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
pst.setString(1,p.getId());
pst.setString(2, p.getName());
pst.setString(3, p.getAddress());
pst.setInt(4, p.getPostcode());
pst.setString(5,p.getTel());
pst.setString(6, p.getFax());
pst.setString(7, p.getBankName());
pst.setString(8, p.getBankNo());
pst.setString(9, p.getMeno());
pst.executeUpdate();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.close(pst, conn);
}
return false;
}
@Override
public List queryAll() {
List plist=new ArrayList<>();
String sql="select * from tb1_provider";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
while(rs.next()) {
Provider p=new Provider();
p.setId(rs.getString("id"));
p.setName(rs.getString("name"));
p.setAddress(rs.getString("address"));
p.setPostcode(rs.getInt("postcode"));
p.setTel(rs.getString("tel"));
p.setFax(rs.getString("fax"));
p.setBankName(rs.getString("bankName"));
p.setBankNo(rs.getString("bankNo"));
p.setMeno(rs.getString("meno"));
plist.add(p);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBUtil.close(rs, pst, conn);
}
return plist;
}
@Override
public List queryForPage(int page, int pageSize) {
List plist=new ArrayList<>();
String sql="select * from (select A.*,rownum rn from(select * from "
+ " tb1_provider) A where rownum<=?) where rn>?";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
pst.setInt(1, page*pageSize);
pst.setInt(2, (page-1)*pageSize);
rs=pst.executeQuery();
while(rs.next()) {
Provider p=new Provider();
p.setId(rs.getString("id"));
p.setName(rs.getString("name"));
p.setAddress(rs.getString("address"));
p.setPostcode(rs.getInt("postcode"));
p.setTel(rs.getString("tel"));
p.setFax(rs.getString("fax"));
plist.add(p);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBUtil.close(rs, pst, conn);
}
return plist;
}
@Override
public int queryForCount() {
String sql="select count(*) from tb1_provider";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
if(rs.next()) {
return rs.getInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.close(rs, pst, conn);
}
return 0;
}
@Override
public boolean delete(String id) {
String sql="delete tb1_provider where id=?";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
pst.setString(1, id);
pst.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(pst, conn);
}
return false;
}
@Override
public boolean update(Provider p) {
String sql="update tb1_provider set name=?,address=?,postcode=?,tel=?,fax=?,bankName=?,bankNo=?,meno=? where id=?";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
pst.setString(1,p.getName());
pst.setString(2,p.getAddress() );
pst.setInt(3,p.getPostcode() );
pst.setString(4,p.getTel() );
pst.setString(5, p.getFax());
pst.setString(6, p.getBankName());
pst.setString(7, p.getBankNo());
pst.setString(8, p.getMeno());
pst.setString(9, p.getId());
pst.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(pst, conn);
}
return false;
}
@Override
public Provider queryById(String id) {
String sql="select * from tb1_provider where id=?";
try {
conn=DBUtil.openConn();
pst=conn.prepareStatement(sql);
pst.setString(1, id);
rs=pst.executeQuery();
if(rs.next()) {
Provider p=new Provider();
p.setName(rs.getString("name"));
p.setAddress(rs.getString("address"));
p.setPostcode(rs.getInt("postcode"));
p.setTel(rs.getString("tel"));
p.setFax(rs.getString("fax"));
p.setBankName(rs.getString("bankName"));
p.setBankNo(rs.getString("bankNo"));
p.setMeno(rs.getString("meno"));
p.setId(rs.getString("id"));
return p;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(rs, pst, conn);
}
return null;
}
}
servlet部分:
package com.lq.good.provider.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
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 org.apache.commons.beanutils.BeanUtils;
import com.lq.good.dao.dao.UserDAO;
import com.lq.good.dao.factory.UserDAOFactory;
import com.lq.good.provider.dao.dao.ProviderDAO;
import com.lq.good.provider.dao.factory.ProviderDAOFactory;
import com.lq.good.provider.domain.Provider;
import com.lq.good.user.domain.User;
import com.lq.good.util.PageBean;
import com.lq.good.util.UUIDUtil;
@WebServlet("/jcxx/provider")
public class ProviderServelt extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String op=req.getParameter("op");
if("add".equals(op)) {
add(req,resp);
}
else if("list".equals(op)) {
list(req,resp);
}
else if("page".equals(op)) {
page(req,resp);
}
else if("delete".equals(op)) {
delete(req,resp);
}else if("update".equals(op)){
update(req,resp);
}
else if("edit".equals(op)) {
edit(req,resp);
}else {
System.out.println("无效操作!!!");
}
}
private void edit(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String id=req.getParameter("id");
ProviderDAO pdao=ProviderDAOFactory.getProviderDAO();
Provider p=pdao.queryById(id);
req.setAttribute("provider", p);
req.getRequestDispatcher("/jcxx/providerMQuery.jsp")
.forward(req, resp);
}
private void update(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String name=req.getParameter("name");
String address=req.getParameter("address");
String postcode=req.getParameter("postcode");
String tel=req.getParameter("tel");
String fax=req.getParameter("fax");
String bankName=req.getParameter("bankName");
String bankNo=req.getParameter("bankNo");
String meno=req.getParameter("meno");
String id=req.getParameter("id");
Provider p=new Provider();
p.setName(name);
p.setAddress(address);
p.setPostcode(Integer.parseInt(postcode));
p.setTel(tel);
p.setFax(fax);
p.setBankName(bankName);
p.setBankNo(bankNo);
p.setMeno(meno);
p.setId(id);
ProviderDAO pdao=ProviderDAOFactory.getProviderDAO();
boolean b=pdao.update(p);
if(b)
{
resp.sendRedirect(req.getContextPath()+"/jcxx/provider?op=page");
}
else {
System.out.println("修改失败");
}
}
private void delete(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String id=req.getParameter("id");
ProviderDAO pdao=ProviderDAOFactory.getProviderDAO();
boolean b=pdao.delete(id);
if(b) {
resp.sendRedirect(req.getContextPath()+"/jcxx/provider?op=page");
}
else {
System.out.println("删除失败!!!!");
}
}
private void page(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String spageNo=req.getParameter("pageNo");
int pageNo=1;
if(spageNo!=null) {
pageNo=Integer.parseInt(spageNo);
}
int pageSize=3;
String url="provider?op=page";
ProviderDAO pdao=ProviderDAOFactory.getProviderDAO();
List plist=pdao.queryForPage(pageNo, pageSize);
int totalRecord=pdao.queryForCount();
PageBean pageBean=new PageBean();
pageBean.setList(plist);
pageBean.setPageNo(pageNo);
pageBean.setPageSize(pageSize);
pageBean.setTotalRecord(totalRecord);
pageBean.setUrl(url);
req.setAttribute("pageBean",pageBean);
req.getRequestDispatcher("/jcxx/providerList.jsp").forward(req, resp);
}
private void list(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
ProviderDAO pdao=ProviderDAOFactory.getProviderDAO();
List plist=pdao.queryAll();
req.setAttribute("plist",plist);
req.getRequestDispatcher("/jcxx/providerList.jsp").forward(req, resp);
}
private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Provider p=new Provider();
p.setId(UUIDUtil.getUUID());
try {
BeanUtils.populate(p, req.getParameterMap());
ProviderDAO pdao=ProviderDAOFactory.getProviderDAO();
boolean b=pdao.add(p);
if(b) {
resp.sendRedirect(req.getContextPath()+"/jcxx/provider?op=list");
}
else {
System.out.println("添加失败");
}
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
前端页面修改:
涉及三个页面:
添加页面:providerAdd.htm
显示信息页面:providerList.jsp
修改页面:providerMQuery.jsp
providerAdd.htm:
1.name属性要与req.getParameter(“”)中获取的一致;
2.在确认添加事件中form中action=“provider?op=add”
providerList.jsp:
首先先要导入jquery-1.11.3.min.js;
在工程中需要导入:
其中pager是页脚的xml,代码如下:
1.0
pager
http://com/lq/tag
page
com.lq.good.util.PageTag
empty
pageNo
true
true
int
totalRecord
true
true
int
pageSize
true
true
int
url
true
true
String
在jsp页面顶部添加:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="page" uri="http://com/lq/tag" %>
页面中显示添加需要跳转到添加页面:
添加供应商信息
利用JSTL语句显示数据库中查询的结果的循环语句;
利用EL语句显示数据库查询语句的属性信息;
${p.name}
${p.address}
${p.postcode}
${p.tel}
${p.fax}
修改
删除
页脚的语句:
providerMQuery.jsp:
同理form中需要:action=“provider?op=update”
由于需要id,但是不能显示所以写成隐藏表单域:
剩下需要填写属性用例子模式写就行了;
地 址:
特别注意name与value值要与servlet对应
ps:如果出现乱码后端加入一个过滤器即可
到这里简陋的web后端实现增删改查就实现了