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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34178998/article/details/77017760

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

首先从页面说起:

页面部分:

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




也就是比上次的多了几个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;
	}

}
数据库的表:




主外键关系:


之后还有对这篇文章的改进加入了C标签把页面的脚本都去掉:http://blog.csdn.net/qq_34178998/article/details/77579408

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





后期加功能再继续更新。。。。。。大笑





猜你喜欢

转载自blog.csdn.net/qq_34178998/article/details/77017760