JavaEE高级框架学习笔记(一)使用MVC思想开发学生信息模糊查询功能

本文深入探讨MVC设计模式在Java中的应用,通过一个学生信息搜索的实例,详细讲解了如何利用JSP、JavaBean和Servlet实现界面交互、数据处理与控制流程。文章覆盖了从界面设计到数据库操作的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.MVC思想概述

MVC是一个设计模式,M是model,V是view,C是controller,在Java中,一般利用JSP作为view作为视图层,负责可视化的界面;用JavaBean作为model,作为负责被实例化和存储数据的对象,Servlet则负责作为controller,因为Servlet可以连接JSP和JavaBean,因此适合作为中间控制器。

2.如何利用MVC思想去实现具体需求

题目:开发一个界面,输入学生的模糊信息,点击确定后,可以输出学生的个人详细信息。

主要代码如下:

StudentSearch.jsp:

<form action="searchServlet" method ="get">
姓名<input type="text" name="name">
<input type="submit" value="搜索">
</form>

表单会以get的方式被提交到searchServlet里面去

searchServlet.java:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String name=request.getParameter("name");
		name=new String(name.getBytes(),"UTF-8");
		StudentDao studentDao=new StudentDao();
		ArrayList info=studentDao.getInfo(name);
		request.setAttribute("info", info);
		request.getRequestDispatcher("search.jsp").forward(request, response);
	}

这里拿到了请求中的name属性,放到DAO里面去进行数据库的校验,因为Java 默认的编码方式不适合中文,所以这里进行了转码。

StudentDao.java:

public ArrayList getInfo(String name) {
		
		ArrayList students=new ArrayList();
		
		String driver="com.mysql.jdbc.Driver";
		String url="jdbc:mysql://localhost:3306/letterwish?characterEncoding=UTF8";
		String user="root";
		String pass="Oushile123.";
		Connection conn;
		Statement stm;
		try {
			
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			stm=conn.createStatement();
			name = new String(name.getBytes("ISO8859-1"), "utf-8"); 
			String sql="select * from user where name like '%"+name+"%'";
			System.out.println(sql);
			ResultSet rs=stm.executeQuery(sql);
			while(rs.next()) {
				Student student=new Student();
				System.out.println(rs.getString("name"));
				student.setAccount(rs.getString("account"));
				student.setName(rs.getString("name"));
				student.setSex(rs.getString("sex"));
				students.add(student);
			}
			rs.close();
			stm.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
		return students;
	
	}

这里再次使用了中文转码防止出错,其实不添加也是可以的。结果会返回一个ArrayList集合,然后被Servlet接收到,把结果存在request.setAttribute里面,然后网页跳转到search.jsp,利用request.getAttribute把结果都打印在屏幕上。

search.jsp:(注意导入beans.Student和ArrayList所在的包)

 <%
 ArrayList stus=(ArrayList)request.getAttribute("info");
   	for(int i=0;i<stus.size();i++){
   		Student stu = (Student)stus.get(i);
   		out.print(stu.getAccount());
   		out.print(stu.getName());
   		out.print(stu.getSex());
   		
   		}
   	%>

具体效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值