编写程序:使用MVC模式开发程序,完成数据的模糊查询。
要求:
(1)index.jsp用于输入要查询的数据。
(2)result.jsp:用于显示结果。
(3)queryServlet:用于验证数据、实例化JavaBean、调用连接数据库、控制页面跳转
(4)queryDAO:用于连接数据库及进行数据库的操作如:查询、删除、更改等
(5)Student:JavaBean用于数据的封装,方便将查询结果在servlet与jsp页面之间进行传递等
以上几个部分共同构成了MVC模式,JSP为MVC模式当中的V,Servlet为C,queryDAO与JavaBean合在一起为M。
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
请输入要查询的内容:
<form action="queryServlet" method="post">
<input name="name">
<input type="submit" value="模糊查询">
</form>
</body>
</html>
<%@ page language="java" import="java.util.*,com.mars.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>查询结果</title>
</head>
<body>
查询结果如下:
<table border="1">
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>地址</td>
</tr>
<%
ArrayList arrayList = (ArrayList)request.getAttribute("arrayList");
for(int i=0; i<arrayList.size();i++){
Student student = (Student)arrayList.get(i);
%>
<tr>
<td><%=student.getId()%></td>
<td><%=student.getName()%></td>
<td><%=student.getAge()%></td>
<td><%=student.getSex()%></td>
<td><%=student.getAddress()%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>queryServlet</servlet-name>
<servlet-class>com.mars.queryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>queryServlet</servlet-name>
<url-pattern>/queryServlet</url-pattern>
</servlet-mapping>
</web-app>
package com.mars;
public class Student {
private int id;
private String name;
private String sex;
private int age;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package com.mars;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mars.QueryDAO;
public class queryServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
String name = request.getParameter("name");
QueryDAO qd = new QueryDAO();
ArrayList arrayList = qd.queryLike(name);
request.setAttribute("arrayList", arrayList);
request.getRequestDispatcher("/result.jsp").forward(request, response);
}
}
package com.mars;
import java.sql.*;
import java.util.ArrayList;
import com.mars.Student;
public class QueryDAO {
private Connection conn = null;
public QueryDAO() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/testmvc", "root", "root");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList queryLike(String name) {
ArrayList arrayList = new ArrayList();
String SQL = "select * from student where name like" + "'%" + name
+ "%'" + "or address like " + "'%" + name + "%'";
try {
ResultSet resultSet = conn.createStatement().executeQuery(SQL);
while (resultSet.next()) {
Student student = new Student();
student.setId(resultSet.getInt("id"));
student.setName(resultSet.getString("name"));
student.setAge(resultSet.getInt("age"));
student.setSex(resultSet.getString("sex"));
student.setAddress(resultSet.getString("address"));
arrayList.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
}
return arrayList;
}
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
public static void close(Statement stmt) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
}
}
drop database testmvc;
create database testmvc;
use testmvc;
create table student (
id int not null primary key auto_increment,
name varchar(10),
age int,
sex varchar(2),
address varchar(50)
);
insert into student values(null,'张三',20,'男','北京市东城区天安门');
insert into student values(null,'李四',21,'男','上海市东城区天安门');
insert into student values(null,'王五',22,'男','天津市东城区天安门');
insert into student values(null,'赵六',23,'男','南京市东城区天安门');
insert into student values(null,'孙七',24,'男','福建省东城区天安门');
insert into student values(null,'钱八',25,'男','长沙市东城区天安门');
insert into student values(null,'刘九',26,'男','武汉市东城区天安门');