MVC模式实现学生信息管理

2023-11-06

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);
    }
} 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC模式实现学生信息管理 的相关文章

随机推荐

  • 高版本MySQL(5.7,5.8)的JDBC连接新问题

    在使用JDBC连接访问MySQL时一般要使用对应版本的驱动 比如我使用了8 0 11版本的MySQL 对应驱动的Maven描述为
  • 冒泡排序c++代码_教你写一手漂亮的伪代码

    前言 最近在复盘 算法设计与分析 这门课程的时候 发现老师写得一手漂亮的伪代码 着实羡慕不已 看他写其实已经知道大致写伪代码的规则 但本着严谨的态度 还是系统的学习和整理出来 在学习过程中 我们不可能将每一个算法都完完整整敲一遍 那么伪代码
  • WIN10中端口被占用,如何杀死该进程

    查看端口情况 netstat ano findstr lt 端口号 gt 杀死该进程 taskkill PID lt 进程号 gt F
  • M1芯片,PS2022版真的来了。Photoshop 2022 for Mac中文版介绍&安装教程,支持Monterey系统

    Adobe Photoshop 2022是一款非常实用的图形处理工具 在 ps 2022 mac中轻松创建报价图形的功能 使用预设模板 大量自定义和酷炫动画选项为您的照片添加励志名言或个性化信息 PS一直以来都被广泛的应用于平面设计 创意合
  • Esp8266智能配网代码(arduino)

    文章概述 我用的是Esp8266 12F NodeMCU开发板 配网用安信可微信公众号 的在线配网页面 把代码贴出来并解释一下 很高兴帮到和我一样的人 解析代码 程序目录 App 主程序 action 活动相关操作 btn 按钮相关操作 l
  • poj1240 Pre-Post-erous!

    照例先上题目 1 Pre Post erous 查看 提交 统计 提问 总时间限制 1000ms 内存限制 65536kB 描述 We are all familiar with pre order in order and post or
  • 微信记录怎么恢复?恢复已删除微信历史记录的4种方式

    恢复已删除微信历史记录的4种方式 如何在有 没有备份的情况下在 iPhone 和 Android 上恢复旧的或已删除的微信历史记录 如聊天对话 语音消息 照片 图片和视频剪辑 参考本指南 祝您成功恢复微信数据 关于微信数据恢复 说真的 微信
  • 【CVPR2022 BoostMIS 论文笔记】自适应伪标记和信息主动标注的医学图像半监督学习

    目录 摘要 1 Introduction 目的 贡献 3 Method 3 1 公式化符号 3 2 医学图像任务模型 3 3 基于一致性的自适应标签传播器 3 4 对抗性不稳定选择器 3 5 平衡不确定性选择器 3 6 训练算法 4 实验
  • Springboot + Vue ElementUI 实现MySQL&&Postgresql可视化

    一 功能展示 PostgreSQL教程 实现类似于MySQL的show create table功能实现见末尾 效果如图 DB连接配置维护 Schema功能 集成Screw生成文档 导出库的表结构 导出表结构和数据 表对象操作 翻页查询 查
  • Mybatis快速入门

    目录 MyBatis简介 MyBatis基于xml的快速入门 1 案例准备 2 引入依赖 3 编写全局配置文件 4 编写持久层接口的映射文件 5 编写测试类 MyBatis基于注解的快速入门 MyBatis简介 MyBatis 是一个优秀的
  • nodejs安装及环境配置

    一 下载 安装 1 下载node js 下载地址 Node js 2 安装 2 1选择Node js runtime 2 2这里不用选择安装其他的插件 如果选择会消耗2 3g流量的 2 3安装完成 3 检查是否安装成功 3 1 node v
  • C语言——时间制转换

    C语言 写一个程序 要求用户输入24小时制的时间 然后显示12小时制的时间 首先我们得搞清楚24小时制和12小时制之间的差异 从上步的差异中 我们得到规律 整理思路 并完成代码 考虑到代码的健壮性和实用性 考虑可能会遇到的问题 比如用户输入
  • 时间序列——季节系数法

    注 参考司守奎老师的数学建模与算法书籍 在数学建模问题中 有很多类问题具有 季节性特点 类似于不同蔬菜在一年四季中的价格变化 季节性服装在一年四季的价格变化等 对于季节性时间序列的预测 可以采用 季节系数法 来预测时间序列的变化趋势 在时间
  • 【python 1】python 基础

    文章目录 一 格式化输出 1 占位符 2 拼接输出 3 message 输出 4 format 输出 二 input 输入 三 pass break 四 字符串 五 列表 六 元组 七 字典 八 集合 一 格式化输出 1 占位符 s str
  • 文件读写的理论

    为了提高效率 稍微复杂一些的操作系统对文件的读写都是带缓冲的 Linux当然也不例外 所谓缓冲 就是操作系统为最近刚读写的文件内容在内核保留一份副本 以便当再次需要已经缓冲存储在副本中的内容时就不必再临时从设备上读入 而需要写的时候则可以先
  • Jmeter-使用http proxy代理录制脚本

    Jmeter 使用http proxy代理录制脚本 第1步 打卡jmeter工具新增1个线程组 第2步 给线程组添加1个HTTP请求默认值 第3步 设置下HTTP请求默认值第4步 在工作台中新增1个 HTTP代理服务器 第5步 设置HTTP
  • c语言中weak用法,c语言中weak的作用

    c语言中weak的作用 转载参考至 https blog csdn net q251900 在u boot源码中看到 weak关键字 在移植过程中遇到了问题 用例 weak在不同的环境中用法不同 在stm32源码中也比较常见 在u boot
  • BeanCreationException: Error creating bean with name ‘org.springframework.web.servlet.mvc.method.ann

    BeanCreationException Error creating bean with name org springframework web servlet mvc method annotation ExceptionHandl
  • 测试中

    root ubu blockchain2 ll total 44 drwx 5 root root 4096 Aug 4 09 48 drwxr xr x 23 root root 4096 Jul 26 11 26 rw r r 1 ro
  • MVC模式实现学生信息管理

    MVC全名是Model View Controller 是模型 model 视图 view 控制器 controller 的缩写 一种软件设计典范 用一种业务逻辑 数据 界面显示分离的方法组织代码 将业务逻辑聚集到一个部件里面 在改进和个性