这次的代码基本都是自己边想边敲出来的,有进步!
结构跟前面的一样
1.SecondLevelBean
package cn.News.JavaBean;
import java.sql.Date;
public class SecondLevelBean {
private int id;
private String TitleName;
private String FilePath;
private String Creater;
private Date CteatTime;
private int FirstId;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitleName() {
return TitleName;
}
public void setTitleName(String titleName) {
this.TitleName = titleName;
}
public String getFilePath() {
return FilePath;
}
public void setFilePath(String filePath) {
this.FilePath = filePath;
}
public String getCreater() {
return Creater;
}
public void setCreater(String creater) {
this.Creater = creater;
}
public Date getCteatTime() {
return CteatTime;
}
public void setCteatTime(Date cteatTime) {
this.CteatTime = cteatTime;
}
public int getFirstId() {
return FirstId;
}
public void setFirstId(int firstId) {
FirstId = firstId;
}
}
2.SecondLevelDAO
package cn.News.dao;
import cn.News.JavaBean.SecondLevelBean;
public interface SecondLevelDAO {
public void insert(SecondLevelBean secondLevelBean);
}
3.SecondLevelDAOImpl 继承上面的接口
package cn.News.dao.impl;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import cn.News.JavaBean.SecondLevelBean;
import cn.News.dao.SecondLevelDAO;
import cn.News.dbcon.DBConnection;
public class SecondLevelDAOImpl implements SecondLevelDAO {
private DBConnection con;
private PreparedStatement pstmt;
private String sql;
public void insert(SecondLevelBean secondLevel) {
DBConnection con=new DBConnection();
SecondLevelBean secondLevelBean=new SecondLevelBean();
sql="insert into secondleveltitle(TitleName,FilePath,Creater,CreatTime,FirstId)"+"values(?,?,?,?,?)";
try {
pstmt.setString(1, secondLevelBean.getTitleName());
pstmt.setString(2, secondLevelBean.getFilePath());
pstmt.setString(3, secondLevelBean.getCreater());
pstmt.setDate(4, secondLevelBean.getCteatTime());
pstmt.setInt(5,secondLevelBean.getFirstId());
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}con.closeCon();
}
}
}
4.
package cn.News.factory;
import cn.News.dao.FirstLevelDAO;
import cn.News.dao.SecondLevelDAO;
import cn.News.dao.UserDAO;
import cn.News.dao.impl.FirstLevelDAOImpl;
import cn.News.dao.impl.SecondLevelDAOImpl;
import cn.News.dao.impl.UserDAOImpl;
public class DAOFactory {
//获取DAO对象
public static UserDAO getUserDAOInstance(){
return new UserDAOImpl();
}
public static FirstLevelDAO getFirstLevelDAOInstance(){
return new FirstLevelDAOImpl();
}
public static SecondLevelDAO getSecondLevelDAOInstance(){
return new SecondLevelDAOImpl();
}
5.SecondLevelServlet
package cn.News.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.News.JavaBean.SecondLevelBean;
import cn.News.JavaBean.UserBean;
import cn.News.factory.DAOFactory;
import com.jspsmart.upload.File;
import com.jspsmart.upload.SmartUpload;//这里使用了smartupload插件来完成上传文件的功能
import com.jspsmart.upload.SmartUploadException;
public class SecondLevelServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
SmartUpload smart=new SmartUpload();
//初始化
smart.initialize(this.getServletConfig(), request, response);
//准备上传
try {
smart.upload();
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//获取表单元素
int firstId=Integer.parseInt(smart.getRequest().getParameter("firstId"));
String titleName=smart.getRequest().getParameter("titleName");
UserBean user=(UserBean)request.getSession().getAttribute("user");
String creater=user.getUsername();
Date date=new Date();
long longTime = date.getTime();
java.sql.Date creatTime=new java.sql.Date(longTime);
//上传文件
File file=smart.getFiles().getFile(0);
try {
file.saveAs("newshtml/"+file.getFileName());
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//封装
SecondLevelBean secondLevelBean=new SecondLevelBean();
secondLevelBean.setFirstId(firstId);
secondLevelBean.setCreater(creater);
secondLevelBean.setCteatTime(creatTime);
secondLevelBean.setFilePath("newshtml/"+file.getFileName());
secondLevelBean.setTitleName(titleName);
DAOFactory.getSecondLevelDAOInstance().insert(secondLevelBean);//把表单插入
request.getRequestDispatcher("title_file_success.jsp").forward(request, response);
}
}
以上二级新闻发布部分完成,下面继续上一篇的以及新闻发布,因为用户登录进来之后,在一级新闻发布的界面上可能有两种操作,一种是写入以及新闻标题,一种是查询一级标题以上传其对应的二级新闻文件。即一级新闻发布有两种操作:插入和查询
1.FirstLevelDAO
package cn.News.dao;
import java.util.List;
import cn.News.JavaBean.FirstLevelBean;
public interface FirstLevelDAO {
public void insert(FirstLevelBean firstLevel);
public List<FirstLevelBean> selectAll();//新增selectAll方法,将得到的结果以List的形式返回
}
2. SecondLevelDAOImpl:
package cn.News.dao.impl;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import cn.News.JavaBean.FirstLevelBean;
import cn.News.dao.FirstLevelDAO;
import cn.News.dbcon.DBConnection;
public class FirstLevelDAOImpl implements FirstLevelDAO {
//发布一级标题
private DBConnection con;
private PreparedStatement pstmt;
private String sql;
private ResultSet rs;
public void insert(FirstLevelBean firstLevel) {
con=new DBConnection();
sql="insert into firstleveltitle(Titlename,Creater,CreatTime)"+"values(?,?,?)";
try {
pstmt=con.getCon().prepareStatement(sql);
pstmt.setString(1, firstLevel.getTitleName());
pstmt.setString(2, firstLevel.getCreater());
pstmt.setDate(3, firstLevel.getCteateTime());
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
con.closeCon();
}
}
public List<FirstLevelBean> selectAll() {
con=new DBConnection();
sql="select * from fisrtleveltitle";
List<FirstLevelBean> fl=new ArrayList<FirstLevelBean>();
try {
pstmt=con.getCon().prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
FirstLevelBean firstLevel=new FirstLevelBean();
firstLevel.setUid(rs.getInt("id"));
firstLevel.setCreater(rs.getString("Creater"));
firstLevel.setTitleName(rs.getString("TitlName"));
firstLevel.setCteateTime(rs.getDate("CreatTime"));
fl.add(firstLevel);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
con.closeCon();
}
return fl;//以List形式返回数据库中的查询结果
}
}
3.FirstLevelServlet:通过参数flag来判断进行插入还是查询的操作
package cn.News.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.News.JavaBean.FirstLevelBean;
import cn.News.JavaBean.UserBean;
import cn.News.factory.DAOFactory;
public class FirstLevelServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String flag=request.getParameter("flag");//需在JSP页面中设置flag参数
String path="";
if("insert".equals(flag)){//参数为insert则进行插入的操作
String titleName=request.getParameter("titlename");
UserBean user=(UserBean)request.getSession().getAttribute("user");
String creater=user.getUsername();
Date date=new Date();
long longTime=date.getTime();
java.sql.Date createTime=new java.sql.Date(longTime);
FirstLevelBean firstLevel=new FirstLevelBean();
firstLevel.setTitleName(titleName);
firstLevel.setCreater(creater);
firstLevel.setCteateTime(createTime);
DAOFactory.getFirstLevelDAOInstance().insert(firstLevel);
path="onetitle_success.jsp";//转入一级标题发布成功页面
}
else if ("select".equals(flag)){//参数为select则进行查询的操作,在JSP页面中将返回的结果填入下拉菜单中
request.getSession().setAttribute("firstLevle", DAOFactory.getFirstLevelDAOInstance().selectAll());
path="title_file.jsp";//转入二级新闻发布页面
}
request.getRequestDispatcher(path).forward(request,response);
}
}