简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作

时间:2021-04-22 13:38:01

前几天写了简单的从页面对数据库进行的操作,下面对该功能进行升级,操作两张相关联的表;上次是对新闻类型的修改,我在这里就不重复了,可以查看我之前的博客,

首先从页面说起:

页面部分:

页面部分我用了10个JSP完成的如图:

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作



也就是比上次的多了几个news后缀的几根文件

1、添加新闻内容

addnews,代码如下

<%
request.setCharacterEncoding("UTF-8");
String title=request.getParameter("title");//获取文本框输入的值
String contain=request.getParameter("contain");//获取文本框输入的值
String autor=request.getParameter("autor");//获取文本框输入的值
String typeid=request.getParameter("typeid");//获取文本框输入的值
if(title!=null){
//新建构造函数里面的对象
news n=new news(title,contain,autor,Integer.parseInt(typeid));
//新建Servlet层对象
NewsServlet ns=new NewsServlet();
int a=ns.addnews(n);//注意里面的参数,是news里面的参数,传news对象
if(a>0){
//添加成功跳到show界面
response.sendRedirect("shownews.jsp"); //添加成功转到查看页面
}else{
//添加失败在本界面界面
response.sendRedirect("addnews.jsp"); //添加成功转到查看页面
}
}
%>

</head>

<body style="background-image:url(bg3.jpg)">
<h1>这是添加新闻内容界面</h1></hr>
<form action="addnews.jsp" method="post">
标题:<input type="text" name="title"><br/>
内容:<input type="text" name="contain"><br/>
作者:<input type="text" name="autor"><br/>
类型:<select name="typeid">
<%
//servlet对象//遍历寻找类型
Type_NewsServlet tn=new Type_NewsServlet();
List<type_news> list=tn.selectall();//调用其中的查看全部的方法
for(int i=0;i<list.size();i++){
type_news tpn=list.get(i);
%>
<option value="<%=tpn.getId() %>"><%=tpn.getTypename() %></option>
<%
}
%>
</select>
<input type="submit" value="提交">
</form>
</body>
shownews.jsp(用来查看页面)

代码如下:

<script type="text/javascript">
function delete_(id){
var f=confirm("是否确定删除?");
if(f){
location.href="shownews.jsp?ids="+id;
}else{
alert("您取消删除");
}
}

function update(id){
location.href="updatenews.jsp?ids="+id;
}
</script>

</head>

<%
String id=request.getParameter("ids");
if(id!=null){
NewsServlet ns=new NewsServlet();
int a =ns.delete(Integer.parseInt(id)); // us.deleten(Integer.parseInt(id));
response.sendRedirect("shownews.jsp");
}
%>

<body style="background-image:url(bg3.jpg)">
<h1>这是展示界面</h1>
<table border="1">
<tr><td>编号</td><td>标题</td><td>内容</td><td>作者</td><td>类型</td><td>操作</td></tr>
<%
//调用Servlet取到数据
NewsServlet ns=new NewsServlet();
List<news> list =new ArrayList<news>();
list=ns.selectall(null);
for(int i=0;i<list.size();i++){
news n=list.get(i);
%>
<tr >
<td><%=n.getId() %></td>
<td><%=n.getTitle() %></td>
<td><textarea name="content" cols="40" rows="6" readonly="readonly"><%=n.getContain() %></textarea></td>
<td><%=n.getAutor() %></td>
<td><%=n.getTypename() %></td>
<td><input type="button" onclick="update(<%=n.getId()%>)" value="修改"/>
  
<input type="button" onclick="delete_(<%=n.getId()%>)" value="删除"/></td>
</tr>
<%
}
%>
</body>
updatenews.jsp(更新)

代码如下:

<body style="background-image:url(bg3.jpg)">
<%
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("ids");

NewsServlet tsl=new NewsServlet(); //导包
news ts=new news();//导包

String type= request.getParameter("type");
if(type!=null){

String id1=request.getParameter("id");
String title=request.getParameter("title");//从下面的输入取值
String contain=request.getParameter("contain");
String autor=request.getParameter("autor");




ts.setId(Integer.parseInt(id1));//强转
ts.setTitle(title);
ts.setContain(contain);
ts.setAutor(autor);


int a=tsl.update(ts);
response.sendRedirect("shownews.jsp");
}else{
if(id!=null){
ts=tsl.selectone(Integer.parseInt(id));
}
}
%>

<h1>修改新闻界面</h1>
<hr/>
<form action="updatenews.jsp" method="post">
<input type="hidden" name="type" value="3">
<input type="hidden" value="<%=ts.getId() %>"name="id">
标题:<input type="text" value="<%=ts.getTitle() %>" name="title"><br/>
内容:<input type="textarea" value="<%=ts.getContain() %>" name="contain"><br/>
作者:<input type="text" value="<%=ts.getAutor() %>" name="autor"><br/>


<input type="submit" value="确认修改">
</body>
接下来是后台程序:

servlet层:

代码如下:

public class NewsServlet {

//新建后面层的对象,方便调用方法
NewsService ns=new NewsServiceImp();

/**********添加新闻内容***************************************************/
public int addnews(news n){
int a=0;
a=ns.addnews(n);
return a;
}

/**********查看新闻内容***************************************************/
public List<news> selectall(news n){
List<news> list=ns.selectall(null);
return list;
}
/**********删除新闻内容***************************************************/
public int delete(int id){
int a=0;
a=ns.delete(id);
return a;
}
/**********查找一个新闻内容***************************************************/
public news selectone(int id){
news nn=ns.selectone(id);
return nn;
}
/**********更新新闻内容***************************************************/
public int update(news s){
int a=0;
a=ns.update(s);
return a;
}
}
service层:

代码如下:

public interface NewsService {

public int addnews(news n);

public List<news> selectall(news n);

public int delete(int id);

public news selectone(int id);

public int update(news s);
}
ServiceImp程序:

public class NewsServiceImp implements NewsService{//接口

//新建后面层的对象,方便调用方法
NewsDao nd=new NewsDaoImp();

/**********添加新闻内容***************************************************/
public int addnews(news n) {
int a=0;
a=nd.addnews(n);
return a;
}
/**********查看新闻内容***************************************************/
public List<news> selectall(news n) {
List<news> list=nd.selectall(n);
return list;
}

/**********删除新闻内容***************************************************/
public int delete(int id) {
int a=0;
a=nd.delete(id);
return a;
}
/**********查找一个新闻内容***************************************************/
public news selectone(int id){
news nn=nd.selectone(id);
return nn;

}
/**********更新新闻内容***************************************************/
public int update(news s) {
int a=0;
a=nd.update(s);
return a;
}
}
Dao层:

public interface NewsDao {

public int addnews(news n);

public List<news> selectall(news n);

public int delete(int id);

public news selectone(int id);

public int update(news s);
}
DaoImp程序:

public class NewsDaoImp implements NewsDao{//接口
Connection conn=null;
ResultSet rs=null;
PreparedStatement ps=null;

/**********添加新闻内容***************************************************/
public int addnews(news n) {
int a=0;
//连接数据库
try {
conn=shujuku.conn();
String sql="insert into news values(?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1, n.getTitle());
ps.setString(2, n.getContain());
ps.setString(3, n.getAutor());
ps.setInt(4, n.getTypeid());
a=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return a;
}

/**********查看新闻内容***************************************************/
public List<news> selectall(news n) {
List<news> list=new ArrayList<news>();
try {
conn=shujuku.conn();
String sql="select n.id,n.title,n.contain,n.autor,ts.typename " +
"from news as n " +
"inner join types as ts " +
"on n.typeid=ts.id";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
//另一个构造函数
news ty=new news(rs.getInt("id"), rs.getString("title"),
rs.getString("contain"),rs.getString("autor"),rs.getString("typename"));
list.add(ty);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}

/**********删除新闻内容***************************************************/
public int delete(int id) {
int a=0;
try {
conn=shujuku.conn();
String sql="delete from news where id="+id;
ps=conn.prepareStatement(sql);
a=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return a;
}

/**********查找一个新闻内容***************************************************/
public news selectone(int id) {
news nn=new news();//还要有一个空的构造方法3
try {
conn=shujuku.conn();
String sql="select*from news where id="+id;
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()){
nn.setId(rs.getInt("id"));
nn.setTitle(rs.getString("title"));
nn.setContain(rs.getString("contain"));
nn.setAutor(rs.getString("title"));
nn.setTypeid(rs.getInt("typeid"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return nn;
}

/**********更新新闻内容***************************************************/
public int update(news s) {
int a=0;
try {
conn=shujuku.conn();
String sql="update news set title=?,contain=?,autor=? where id=?";
ps=conn.prepareStatement(sql);
ps.setString(1, s.getTitle());
ps.setString(2, s.getContain());
ps.setString(3, s.getAutor());
ps.setInt(4, s.getId());
a=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return a;
}

}
数据库的表:

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作

主外键关系:

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作


代码就这么多:最后来看下运行效果吧:

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作

简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作


简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作

后期加功能再继续更新。。。。。。简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作