抓取网页数据(在实现简单网页上对数据内容进行增删改查部分+数据库表我用 )
优采云 发布时间: 2021-12-08 18:23抓取网页数据(在实现简单网页上对数据内容进行增删改查部分+数据库表我用
)
在一个简单的网页上添加、删除、修改和检查数据内容,需要三个部分,即jsp网页部分+java后台部分+数据库表
我用一个新闻例子来实现这个,先写一个java后台程序
java后台程序:
我们采用三层模型进行设计:servlet、service、dao层,并创建实体包对数据库和后端属性进行打包
性切图片
首先写函数的顺序是从servlet、service、dao层:
servlet层代码如下:
公共类 TypeServlet {
TypeService ts=new TypeServiceImp();//调用服务层
/*******添加**************************************** ** **************************************************/
public int addtype(String name){
int a=0;
a=ts.addtype(name);
返回一个;
}
/*******查看**************************************** **************************************************/
公共列表 selets(){
List list=new ArrayList();
list=ts.selets(null);
返回列表;
}
/*******删除**************************************** ** **************************************************/
public int delete(int id){
int a=0;
types t=new types();
t.setId(id);
a=ts.delete(t);
返回一个;
}
/*******修改**************************************** **************************************************/
公共 int 更新(类型 t){
int a=0;
a=ts.update(t);
返回一个;
}
/*******找一个**************************************** ****************************************************/<//p
p公共类型 selectone(int id){/p
ptypes t=new types();/p
pt.setId(id);/p
p类型 nt=ts.selectone(t);/p
p返回nt;/p
p}/p
p}/p
p服务层分为两层:接口层和实现层/p
pimg src='https://img-blog.csdn.net/20170802160709120?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxNzg5OTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center' alt=''//p
p界面程序如下:/p
ppre
/pre/p
p公共接口 TypeService {/p
ppublic int addtype(String name);/p
ppublic List selets(types t);/p
ppublic int delete(types t);/p
ppublic int update(types t);/p
p公共类型 selectone(types t);/p
p}/p
p接口实现方案:/p
ppre
/pre/p
p公共类 TypeServiceImp 实现 TypeService{/p
pTypeDao td = new TypeDaoImp();/p
ppublic int addtype(String name) {//注意返回的数据不要忘记修改/p
pint a=0;/p
pa=td.addtype(name);/p
p返回一个;/p
p}/p
p公共列表选择(类型 t){/p
pList list=new ArrayList();/p
plist=td.selets(t);/p
p返回列表;/p
p}/p
p/*******删除**************************************** ** **************************************************//p
ppublic int delete(types t) {/p
pint a=0;/p
pa=td.delete(t);/p
p返回一个;/p
p}/p
p/*******修改**************************************** **************************************************//p
ppublic int update(types t) {/p
pint a=0;/p
pa=td.update(t);/p
p返回一个;/p
p}/p
p/*******查找单个 ************************************ * ****************************************************//p
p公共类型 selectone(types t){/p
ptypes tp=new types();/p
ptp=td.selectone(t);/p
p返回tp;/p
p}/p
p}/p
p道层程序也分为接口层和实现层/p
p接口层程序:/p
ppre
/pre/p
p公共接口 TypeDao {/p
ppublic int addtype(String name);/p
ppublic List selets(types t);/p
ppublic int delete(types t);/p
ppublic int update(types t);/p
p公共类型 selectone(types t);/p
p}/p
p实施方案:/p
ppre
/pre/p
p公共类 TypeDaoImp 实现 TypeDao{/p
p连接 con=null;/p
pPreparedStatement ps=null;/p
p结果集 rs=null;/p
ppublic int addtype(String name){/p
pint a=0;/p
p试试{/p
p//连接数据库/p
pcon=Shujuku.conn();/p
pString sql="insert into typesname values(?)"; //设置id自增/p
pps=con.prepareStatement(sql);/p
pps.setString(1, name);/p
pa=ps.executeUpdate();/p
p} catch (SQLException e) {/p
p// TODO 自动生成的 catch 块/p
pe.printStackTrace();/p
p}/p
p返回一个;/p
p}/p
p公共列表选择(类型 t){/p
pList list=new ArrayList();/p
p试试{/p
p//连接数据库/p
pcon=Shujuku.conn();/p
pString sql="select*from typesname";/p
pps=con.prepareStatement(sql);/p
prs=ps.executeQuery();/p
pwhile(rs.next()){/p
ptypes ty=new types();/p
pty.setId(rs.getInt("id"));/p
pty.setTypename(rs.getString("typename"));/p
plist.add(ty);/p
p}/p
p} catch (SQLException e) {/p
p// TODO 自动生成的 catch 块/p
pe.printStackTrace();/p
p}/p
p返回列表;/p
p}/p
p/*******删除**************************************** ** **************************************************//p
ppublic int delete(types t) {/p
pint a=0;/p
p试试{/p
pcon=Shujuku.conn();/p
pString sql="delete from typesname wherelanguage-java">ps=con.prepareStatement(sql);
a=ps.executeUpdate();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
返回一个;
}
/*******修改**************************************** **************************************************/
public int update(types t) {
int a=0;
试试{
con=Shujuku.conn();
String sql="update typesname set typename=? where id=?";
ps=con.prepareStatement(sql);
ps.setString(1, t.getTypename());
ps.setInt(2, t.getId());
a=ps.executeUpdate();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
返回一个;
}
/*******找一个**************************************** ****************************************************/<//p
p公共类型 selectone(types t) {/p
ptypes tp=new types();/p
p试试{/p
pcon=Shujuku.conn();/p
pString sql="select * from typesname where id=?";/p
pps=con.prepareStatement(sql);/p
pps.setInt(1, t.getId());/p
prs=ps.executeQuery();/p
pif(rs.next()){/p
ptp.setId(rs.getInt("id"));/p
ptp.setTypename(rs.getString("typename"));/p
p}/p
p} catch (SQLException e) {/p
p// TODO 自动生成的 catch 块/p
pe.printStackTrace();/p
p}/p
p返回tp;/p
p}/p
p}/p
p最后是数据库包。为了使用方便,创建一个包来存放数据库的驱动连接信息:/p
p代码如下:/p
ppre
/pre/p
p公开课修宿{/p
p公共静态连接 conn(){/p
p//定义地址/p
pString url="jdbc:sqlserver://localhost:1433;DatabaseName=test;";/p
p//定义连接的初始值/p
pConnection connection=null;/p
p试试{/p
p//加载驱动/p
pClass.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");/p
p//建立连接/p
pconnection=DriverManager.getConnection(url, "sa", "DCX5201314");/p
p} catch (SQLException e) {/p
p// TODO 自动生成的 catch 块/p
pe.printStackTrace();/p
p} catch (ClassNotFoundException e) {/p
p// TODO 自动生成的 catch 块/p
pe.printStackTrace();/p
p}/p
p返回连接;/p
p}/p
p}/p
p属性包,代码如下:/p
ppre
/pre/p
p公共类类型{/p
p私有int id;/p
p私有字符串类型名;/p
ppublic int getId() {/p
p返回id;/p
p}/p
ppublic void setId(int id) {/p
pthis.id = id;/p
p}/p
ppublic String getTypename() {/p
p返回类型名称;/p
p}/p
ppublic void setTypename(String typename) {/p
pthis.typename = typename;/p
p}/p
p}/p
pjava后台程序太多了;/p
p接下来是数据库部分:/p
p数据库部分主要是创建表。笔者使用SQL Server 2008。首先创建数据库test,创建表typename,设置两列为id typename,id为主键,int类型,自增为1; typename 设置为 varchar 类型,不能为空。/p
pimg src='https://img-blog.csdn.net/20170802162320361?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxNzg5OTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center' alt=''//p
p好了,数据库和java后端都设置好了,现在进入前端网页部分,/p
p页面的一部分/p
p在myeclipse中新建7个jsp文件/p
pimg src='https://img-blog.csdn.net/20170802163307903?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxNzg5OTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center' alt=''//p
pindex.jsp 是一个完整的网页/p
p设置代码如下:/p
ppre
/pre/p
phead.jsp/p
ppre
/pre/p
p这是头/p
pleft.jsp/p
ppre
/pre/p
p这是左边/p
pright.jsp/p
ppre
/pre/p
p这是右边/p
paddtype.jsp/p
ppre
/pre/p
p0){/p
pRequestDispatcher rd = 请求/p
p.getRequestDispatcher("showtype.jsp");/p
prd.forward(request, response);/p
p}其他{/p
pRequestDispatcher rd = 请求/p
p.getRequestDispatcher("addtype.jsp");/p
prd.forward(request, response);/p
p}/p
p}/p
p%>
添加新闻类型
showtype.jsp
展示类型
数量
输入名称
操作
updatetype.jsp
修改新闻类型界面
最终项目发布在 tomcat 上。
以下地址积分系统调得太高了。我在此处重新上传了具有相同地址的副本:
高分下载包文件在这里:
也可以参考这篇文章的两个表关联操作:
如果有什么问题,希望大家提出来,共同进步