MVC模式实现学生信息管理

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

 MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。

                                                   

学生信息管理:增、删、改、查

实现过程:Controller-servlet      View-jsp    Model-javaBean

                  

代码: 

            需要导入Tomcat 和SQL Server驱动-sqljdbc.jar,并对web.xml文件做配置

                         

运行界面:

                        

web.xml: 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>MVC</display-name>
  
  <!-- DeleteServlet配置 -->
	<servlet>
		<servlet-name>DeleteServlet</servlet-name>
		<servlet-class>com.DeleteServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>DeleteServlet</servlet-name>
		<url-pattern>/DeleteServlet</url-pattern>
	</servlet-mapping>
	
	<!-- SaveServlet配置 -->
	<servlet>
		<servlet-name>SaveServlet</servlet-name>
		<servlet-class>com.SaveServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>SaveServlet</servlet-name>
		<url-pattern>/SaveServlet</url-pattern>
	</servlet-mapping>
	
	<!-- 过滤器配置 -->
	<filter>
		<filter-name>MyFilter</filter-name>
		<filter-class>com.MyFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>MyFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- 主页面 -->
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
  
</web-app>

javabean的学生类:Student.java

package com;

public class Student {
        private String sno;
        private String sname;
        public String getSno(){
        	return sno;
        }
        public void setSno(String sno){
        	this.sno=sno;
        }
        public String getSname(){
        	return sname;
        }
        public void setSname(String sname){
        	this.sname=sname;
        }
        //默认构造方法
        public Student(){
        	
        }
        //构造方法
        public Student(String sno,String sname){
        	super();
        	this.sno=sno;
        	this.sname=sname;
        }
        //重写toString,输出所有属性的值
        @Override
        public String toString() {
              String s="";
              s+=sno+" "+sname;
              return   s;
        }
}

javaBean的学生表的数据库操作类:StudentDao.java

package com;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class StudentDao {
        //学生表的数据库操作类
	
	    //添加
	    public int insert(Student stu){
	    	
	    	  int rtn=0;//表示数据是否插入成功
	    	  
	    	  try{
	    		   //连接数据库
	    		  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    		  Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Student","lkc","123456");
	    		  
	    		  //得到数据库操作对象
	    		  PreparedStatement ps=con.prepareStatement(
	    				  "insert into student(sno,sname) values (?,?)"
	    				  );
	    		  
	    		  //写入数据
	    		  ps.setString(1, stu.getSno());
	    		  ps.setString(2, stu.getSname());
	    		  
	    		  //数据提交
	    		  rtn=ps.executeUpdate();
	    		  ps.close();
	    		  con.close();
	    	  }catch(Exception e){
	    		    e.printStackTrace();
	    		    rtn=-1;
	    	  }
	    	  return rtn;
	    }//添加结束
	    
	    //删除
	    public int delete(String sno){
	    	 int rtn=0;//表示数据是否插入成功
	    	 
	    	 try{
	    		  
	    		 //连接数据库
	    		 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    		 Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Student","lkc","123456");
//	    		 System.out.println("success");
	    		 //得到数据库操作对象
	    		 PreparedStatement ps=con.prepareStatement(
	    				 "delete student where sno=?"
	    				 );
	    		 
	    		 //写入数据
	    		 ps.setString(1, sno);
	    		 
	    		 //数据提交
	    		 rtn=ps.executeUpdate();
	    		 ps.close();
	    		 con.close();
	    		 
	    	 }catch(Exception e){
	    		  e.printStackTrace();
	    		  rtn=-1;
	    	 }
	    	 return rtn;
	    }//删除结束
	    
	    //修改
	    public int update(Student stu){
	    	  int rtn=0;
	    	  try{
	    		  
	    		  //连接数据库
	    		  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    		  Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Student","lkc","123456");
	    		  
	    		  //得到数据库操作对象
	    		  PreparedStatement ps=con.prepareStatement(
	    				    "update student set sname=? where sno=?"
	    				  );
	    		  
	    		  //写入数据
	    		  ps.setString(1, stu.getSname());
	    		  ps.setString(2, stu.getSno());
	    		  
	    		  //数据提交
	    		  rtn=ps.executeUpdate();
	    		  ps.close();
	    		  con.close();
	    		  
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    		  rtn=-1;
	    	  }
	    	  return rtn;
	    }//修改结束
	    
	    //查询单条记录
	    public Student select(String sno){
	    	 
	    	Student rtn=null;
	    	
	    	try{
	    		  
	    		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    		Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Student","lkc","123456");
	    		
	    		PreparedStatement ps=con.prepareStatement(
	    				"select *from student where sno=?"
	    				);
	    		
	    		ps.setString(1, sno);
	    		
	    		ResultSet rs=ps.executeQuery();
	    		
	    		if(rs!=null&&rs.next()){
	    			 rtn=new Student();
	    			 rtn.setSno(sno);
	    			 rtn.setSname(rs.getString("Sname"));
	    		}
	    		
	    		rs.close();
	    		ps.close();
	    		con.close();
	    		
	    	}catch(Exception e){
	    		e.printStackTrace();
	    	}
	    	return rtn;
	    }//查询单条记录结束
	    
	    //查询所有记录
	    public List<Student> selectAll(){
	    	   
	    	List<Student> rtn=null;
	    	
	    	try{
	    		  
	    		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    		Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Student","lkc","123456");
	    		
	    		Statement st=con.createStatement();
	    		ResultSet rs=st.executeQuery(
	    				"select *from student"
	    				);
	    		
	    		if(rs!=null){
	    			
	    			 rtn=new ArrayList<Student>();
	    			 
	    			 while(rs.next()){
	    				 
	    				 Student stu=new Student();
	    				 stu.setSno(rs.getString("sno"));
	    				 stu.setSname(rs.getString("sname"));
	    				 rtn.add(stu);
	    			 }
	    		}
	    		
	    		rs.close();
	    		st.close();
	    		con.close();
	    		
	    	}catch(Exception e){
	    		 e.printStackTrace();
	    	}
	    	return rtn;
	    }//查询所有记录结束
	    
}

 

主界面:index.jsp

<%@page import="com.Student"%>
<%@page import="java.util.List"%>
<%@page import="com.StudentDao"%>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>

         学生信息表
   <br>
   <%
      //调用模式层StudentDao,得到List
      StudentDao sd=new StudentDao();
      List<Student> ls=sd.selectAll();
      
      if(ls!=null){
    	  //遍历输出
    	  for(Student stu:ls){
    		  
    		  out.print("sno="+stu.getSno()+" ");
    		  out.print("sname="+stu.getSname()+" ");
    		  out.print("<a href='Update.jsp?sno="+stu.getSno()+"'>修改</a> <a href='DeleteServlet?sno="+stu.getSno()+"'> 删除</a> <br>");
    		  
    	      
    	  }
       }
   %>
   <br>
   
         插入学生信息
   <br>
   <form action="SaveServlet" method="post">
                     学号:<input type="text" name="sno"><br>
                     姓名:<input type="text" name="sname"><br>
           <input type="submit" value="提交"><br>
   </form>
   
</body>
</html>

更新页面 Update.jsp

<%@page import="com.Student"%>
<%@page import="com.StudentDao"%>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>修改学生信息</title>
</head>
<body>
    <%
        String sno=request.getParameter("sno");
        String sname="";
        
        if(sno!=null && sno.trim().length()!=0){
        	
        	StudentDao sd=new StudentDao();
        	
            //得到实体类
            Student stu=sd.select(sno);
            sname=stu.getSname();
        }
        else{
        	out.print("请正确访问!");
        }
    %>
    <br>
    
           修改学生信息
    <br>
    <form action="SaveServlet" method="post">
                              学号:<input type="text" name="sno" value="<%=sno %>"><br>
                              姓名:<input type="text" name="sname" value="<%=sname %>"><br>
          <input type="hidden" name="isupdate" value="1">
          <input type="submit" value="提交"><br>
    </form>
</body>
</html>

执行更新或插入的servlet:SaveServlet.java

package com;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SaveServlet
 */
@WebServlet("/SaveServlet")
public class SaveServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SaveServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		      
	          //接收参数
		       String sno=request.getParameter("sno");
		       String sname=request.getParameter("sname");
		       
		       //是否更新
		       String isupdate=request.getParameter("isupdate");
		       
		       //验证
		       if(sno!=null && sno.trim().length()!=0 && sname!=null &&sname.trim().length()!=0){
		    	   
		    	   //调用模式层
		    	   StudentDao sd=new StudentDao();
		    	   
		    	   Student stu=new Student(sno,sname);
		    	   
		    	   int rtn=-1;
		    	   //判断是insert还是update
		    	   
		    	   //update
		    	   if(isupdate!=null && isupdate.equals("1")){
		    		    rtn=sd.update(stu);
		    	   }//update结束
		    	   //insert
		    	   else{
		    		   rtn=sd.insert(stu);
		    	   }//insert结束
		    	   
		    	   if(rtn>0){
		    		   response.getWriter().write("保存成功!");
		    		   response.setHeader("refresh", "3;index.jsp");
		    	   }
		    	   else{
		    		    response.getWriter().write("保存失败!");
		    		   response.setHeader("refresh", "3;index.jsp");
		    	   }
		       }//if结束
		       else{
		    	   response.getWriter().write("请正确提交数据!");
	    		   response.setHeader("refresh", "3;index.jsp");
		       }
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

执行删除的servlet:DeleteServlet.java

package com;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class DeleteServlet
 */
@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DeleteServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		   String sno=request.getParameter("sno");
		   if(sno!=null&&sno.trim().length()!=0){
			   StudentDao sd=new StudentDao();
			   if(sd.delete(sno)>=0){
				     response.getWriter().write("删除成功!");
				     response.setHeader("refresh", "3;index.jsp");
			   }
			   else{
				   response.getWriter().write("删除失败!");
				     response.setHeader("refresh", "3;index.jsp");
			   }
		   }
		   else{
			     response.getWriter().write("请正确提交数据!");
			     response.setHeader("refresh", "3;index.jsp");
		   }
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

 过滤器进行字符编码:MyFilter.java

package com;

import java.io.IOException;

import javax.servlet.*;

public class MyFilter implements Filter{
	 // 字符编码
     private String encoding;
     public MyFilter() {
		// TODO Auto-generated constructor stub
	}
      
      @Override
    public void destroy() {
    	// TODO Auto-generated method stub
    	
    }
      
      @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    	// TODO Auto-generated method stub
    	// 获取字符编码
  		 encoding = filterConfig.getInitParameter("encoding");
    }
      
      @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    		throws IOException, ServletException {
    	// TODO Auto-generated method stub
    	// 判断字符编码是否有效
      	if (encoding != null) {
      		// 设置request字符编码
              request.setCharacterEncoding(encoding);
              // 设置response字符编码
              response.setContentType("text/html; charset="+encoding);
          }
  		chain.doFilter(request, response);
    }
} 

 

  • 14
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
好的,我可以为您介绍一下如何使用MVC框架实现学生管理系统。 首先,MVC是一种软件设计模式,它将应用程序分为三个部分:模型、视图和控制器。在学生管理系统中,模型可以表示为一个学生类,其中包含学生的基本信息,例如姓名、年龄、性别等。视图可以是一个用户界面,它允许用户查看和编辑学生信息。控制器是应用程序的核心,它处理用户输入并更新模型和视图。 1. 创建学生类模型 首先,你需要创建一个学生类模型,该模型包含学生的基本信息。例如,你可以创建一个名为Student的类,其中包含属性如下: ``` public class Student { private String name; private int age; private String gender; // 其他属性 // getter 和 setter 方法 } ``` 2. 创建视图界面 接下来,你需要创建一个用户界面,该界面允许用户查看和编辑学生信息。你可以使用Java Swing或JavaFX等GUI工具包来创建界面。 3. 创建控制器 最后,你需要创建一个控制器,该控制器处理用户输入并更新模型和视图。例如,你可以创建一个名为StudentController的类,其中包含以下方法: - addStudent():将新学生添加到模型中 - deleteStudent():从模型中删除学生 - updateStudent():更新模型中的学生信息 - getStudent():获取模型中的学生信息 ``` public class StudentController { private Student model; private StudentView view; public StudentController(Student model, StudentView view) { this.model = model; this.view = view; } public void setStudentName(String name) { model.setName(name); } public String getStudentName() { return model.getName(); } public void setStudentAge(int age) { model.setAge(age); } public int getStudentAge() { return model.getAge(); } public void setStudentGender(String gender) { model.setGender(gender); } public String getStudentGender() { return model.getGender(); } public void updateView() { view.printStudentDetails(model.getName(), model.getAge(), model.getGender()); } } ``` 在控制器中,你可以将学生模型和视图界面传递为参数,并在控制器中实现各种方法,以处理用户输入并更新模型和视图。 4. 运行程序 最后,你需要运行程序,以查看学生管理系统的功能。用户可以在视图界面中输入学生信息,然后通过控制器将学生信息添加到模型中,并更新视图界面以显示最新的学生信息。 这就是使用MVC框架实现学生管理系统的基本步骤。当然,具体实现可能会因为不同的开发环境和实际需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OUC_lkc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值