1.完成实体类DBHerpr
首先创建src然后在src的内部创建依次创建dao,model,servie,servlet,util几个包然后再在util内部创建DBHerpr
在内部写上下面这些代码用来连接数据库和关闭服务
private static final String URL="jabc:oracle:thin:@localhost:1521:orcl";
private static final String CNAME="oracle.jdbc.driver.OracleDriver";
//加载驱动
static {
try {
Class.forName(CNAME);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getCon() {
Connection con=null;
try {
con=DriverManager.getConnection(URL, "scott", "tiger");
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
public static void myClose(Connection con,PreparedStatement ps,ResultSet rs) {
try {
if(con!=null&&!con.isClosed()) {
con.close();
}
if(ps!=null) {
ps.close();
}
if(rs!=null) {
rs.close();
}
} catch (Exception e) {
}
}
2.在数据库oracle里面创建表t_module
创建代码和测试数据在下面(吧下面代码复制粘贴到oracle的sql窗口直接运行就可以了)
CREATE TABLE t_module (
id integer DEFAULT NULL,
pid integer DEFAULT NULL,
text VARCHAR(150) DEFAULT NULL,
icon VARCHAR(90) DEFAULT NULL,
url VARCHAR(180) DEFAULT NULL,
sort integer DEFAULT NULL
);
INSERT INTO t_module VALUES (20, -1, '订单管理', NULL, '', 2);
INSERT INTO t_module VALUES (2001, 20, '订单管理', NULL, '/orderList.jsp', 6);
INSERT INTO t_module VALUES (2002, 20, '订单统计', NULL, '/orderStatistics.jsp', 7);
INSERT INTO t_module VALUES (21, -1, '系统管理', NULL, '', 3);
INSERT INTO t_module VALUES (2101, 21, '用户管理', NULL, 'jsp/system/userManage.jsp', 8);
INSERT INTO t_module VALUES (2102, 21, '权限管理', NULL, 'jsp/system/authManage.jsp', 10);
INSERT INTO t_module VALUES (2103, 21, '字典管理', NULL, '/dictList.jsp', 11);
INSERT INTO t_module VALUES (22, -1, '书本管理', NULL, '', 1);
INSERT INTO t_module VALUES (2201, 22, '新增书本', NULL, 'jsp/book/addBook.jsp', 4);
INSERT INTO t_module VALUES (2202, 22, '书本管理', NULL, 'jsp/book/bookList.jsp', 5);
3.创建一个实体类model
private Integer id;
private Integer pid;
private String text;
private String icon;
private String url;
private int sort;
private List<Model> children=new ArrayList<Model>();
public Integer getId() {
return id;
}
public List<Model> getChildren() {
return children;
}
public void setChildren(List<Model> children) {
this.children = children;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
@Override
public String toString() {
return "Model [id=" + id + ", pid=" + pid + ", text=" + text + ", icon=" + icon + ", url=" + url + ", sort="
+ sort + "]";
}
4.创建一个接口和一个普通类(数据库访问层)
在接口内写一个
List<Model> listModel(int pid);
然后让普通类继承IModeldao
public class Modeldao implements IModeldao{
@Override
public List<Model> listModel(int pid){
List<Model> ls=new ArrayList<Model>();
String sql="select id,pid,text,icon,url,sort from t_module where pid=?";
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con=DbTemplate.getcon();
ps=con.prepareStatement(sql);
ps.setInt(1, pid);
rs=ps.executeQuery();
while(rs.next()) {
Model m=new Model();
m.setId(rs.getInt("id"));
m.setPid(rs.getInt("pid"));
m.setText(rs.getString("text"));
m.setUrl(rs.getString("url"));
m.setSort(rs.getInt("sort"));
ls.add(m);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DbTemplate.mylc(con, ps, rs);
}
return ls;
}
public static void main(String[] args) {
//用来测试是否可用
IModeldao dao=new Modeldao();
List<Model> ls=dao.listModel(21);
ls.forEach(t->System.out.println(t));
}
}
5.创建一个接口和一个普通类(bzi用来调用数据库访问层)
接口的代码下面就是
List<Model> listModel(int pid);
让后就是Modelservie
public class Modelservie implements IModelservie{
IModeldao dao=new Modeldao();
@Override
public List<Model> listModel(int pid){
List<Model> ls=dao.listModel(pid);
for (Model m : ls) {
//用来是否还有数据没有就停止
if(m.getUrl()==null||"".equals(m.getUrl()))
m.setChildren(listModel(m.getId()));
}
return ls;
}
public static void main(String[] args) {
//用来测试
IModelservie dao=new Modelservie();
List<Model> ls=dao.listModel(-1);
ls.forEach(t->System.out.println(t));
}
}
6.写一个实现类(业务逻辑层)
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 com.alibaba.fastjson.JSON;
import model.Model;
import servie.IModelservie;
import servie.Modelservie;
@WebServlet("/moduleServlet")
public class Modeluiservlet extends HttpServlet{
private IModelservie servie=new Modelservie();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("application/json; charset=UTF-8");
List<Model> ls=servie.listModel(-1);
String date=JSON.toJSONString(ls);
PrintWriter out=resp.getWriter();
out.write(date);
out.flush();
out.close();
}
}
7.最后在吧index.jsp的url改一下就好了
url:ctx +'/moduleServlet',