使用MVC程序完整的实现简单的Student

mac2026-03-25  8

`## 环境配置

首先需要的软件有:eclipse,tomcat 环境:java环境 问题是你要确保这些软件的版本都是兼容的,如果在安装eclipse或者是配置Tomcat Server的时候就出错了,那就要考虑版本兼容的问题了,这些在我的其他博客里有涉及到。

MVC程序基本思路

以根据兴趣爱好查询Student的姓名学号等完整信息为例,需要的核心文件有下面几个: Student.java(学生类,下面有各种属性,等同于于数据表中的属性设置,这个和数据库内容配合在一起,实现交互) Servelt.java(核心程序,这个后缀名虽然是java,但是新建该项目的时候不要选择java类型,要选择Servelt类型的文件,作用是实现Session对象的绑定和回传,绑定的是你输入的关键字,回传的是一个(兴趣爱好属性==keyword)的Student实例) index.html(这个就是一个keyword的输入界面,比较简单) Show.jsp(.jsp文件实现的是java和html内容的混和,作用是在网页上输出Servelt.java回传的Session对象的Student实例的各项属性) 基本思路讲的比较简略,下面的内容只要你一步一步跟着做是没有问题的。

新建动态网页工程及相关文件

1.新建动态网页工程 记得勾选Target runtime为你所部署的Tomcat server。 如果不出问题的话工程里的项目应该是这样的结构:

下面的步骤是核心: 1.点击进入java Resources,发现有src目录,其下什么都没有,现在你右击新建一个包,命名可以为library,方便记忆和书写。然后在这个library下面新建两个文件,首先是一个java类,名称为Student,用来作为数据库格式(内容后面再贴代码),再者是一个Servlet文件,命名为Student_Servlet,作为核心的交互文件。 2.点击进入webcontent目录 然后在就在Webcontent下面建立两个文件,一个是index.html,一个是Show.jsp,文件格式一定要选取正确。

3.添加postgresql-9.2-1000.jdbc4.jar 这个包实现的功能是一个驱动功能,该jdbc驱动利用包下的connection类与数据库直接建立连接,并且通过java语句,直接实现数据库的查询,比如这段代码 首先将postgresql-9.2-1000.jdbc4.jar这个文件放在桌面上或者是一个比较好找的位置 然后右击你的动态网页工程,就是那个Student,找到属性

点击属性进入到这一栏:

然后选择java构建路径,右边有个库,再点击添加外部JAR,在弹出的浏览框里找到你的postgresql-9.2-1000.jdbc4.jar,然后Apply and close就行。下面的截图对比上面的截图就有了postgresql-9.2-1000.jdbc4.jar这一项了。

4.新建sql文件夹 右击动态网页项目Student,点击新建文件夹,命名为Sql,然后在Sql下建立两个sql文件,截图如下: 5.将postgresql-9.2-1000.jdbc4.jar复制到WebContent/WEB-INF/lib下去,直接从桌面上的文件postgresql-9.2-1000.jdbc4.jar中把复制到这个项目工程的此路径中去。

具体代码

下面的代码是我自己写的,如果您要使用的话基础结构可以不必改变,但是不能生搬硬套直接拿来主义,还是要仔细看懂代码,然后适当的复用才能有所得。 首先是 Student.java

package library public class SStudent { private String Sname; private String Snumber; private String Sbirthday; private String Shobby; public String getSname() { return Sname; } public void setSname(String name) { this.Sname = name; } public String getSnumber() { return Snumber; } public void setSnumber(String number) { this.Snumber = number; } public String getSbirthday() { return Sbirthday; } public void setSbirthday(String birthday) { this.Sbirthday = birthday; } public String getShobby() { return Shobby; } public void setShobby(String hobby) { this.Shobby = hobby; } }

然后是Servlet.java:

package library import java.io.IOException; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import library.SStudent;//注意这里要引入SStudent类 public class StudentServelt extends HttpServlet { private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String keyword = null; keyword = request.getParameter("keyword"); if (null == keyword || "".equals(keyword)) keyword = "%"; else keyword = "%" + keyword +"%"; ArrayList<SStudent> Students = new ArrayList<SStudent>();//创建一个Student数组,类型为Title try{ Students = searchStudent(keyword); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } request.getSession().setAttribute("Students", Students); response.sendRedirect("/Student_Servlet/Show.jsp"); } private ArrayList<SStudent> searchStudent(String keyword) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException { ArrayList<SStudent> Students = new ArrayList<SStudent>(); Driver driver = (Driver) Class.forName("org.postgresql.Driver").newInstance(); DriverManager.registerDriver(driver); Connection dbcon = DriverManager.getConnection("jdbc:postgresql://localhost/postgres"); PreparedStatement st = dbcon.prepareStatement("select * from SStudent where Shobby like ?"); st.setString(1, keyword); ResultSet rs = st.executeQuery(); while (rs.next()) {SStudent e=new SStudent(); e.setSname(rs.getString("Sname")); e.setSnumber(rs.getString("Snumber")); e.setSbirthday(rs.getString("Sbirthday")); e.setShobby(rs.getString("Shobby")); Students.add(e); } rs.close(); st.close(); dbcon.close(); return Students; } }

index.html:

<html> <head> <meta http-equiv="Content-Type" content="text/html" /> <title> index </title> </head> <body> <h1>Please input a keyword of a Student:</h1> <p> <form action="StudentServelt" method="post"> <input type="text" name="keyword"> <input type="submit" value="Search"> <input type="reset" value="Reset"> </form> </body> </html>

Show.jsp:

<%@ page contentType="text/html" language="java" %> <%@ page language="java" import="java.util.Iterator, library.SStudent" %> <jsp:useBean id="Students" class = "java.util.ArrayList" scope = "session"></jsp:useBean> <html> <head> <title> Search result.</title> </head> <body> <%if (Students == null || Students.isEmpty()){ %> Sorry, No result. Please <a href="index.html">return.</a> <%}else{ %> <p> </p> <table width="95%" align="center" border="1"> <caption>SStudent</caption> <tr> <td width="10%"> Sname</td> <td width="10%"> Snumber</td> <td width="35%"> Sbirthday</td> <td width="15%"> Shobby</td> </tr> <% Iterator it = Students.iterator(); while (it.hasNext()) { SStudent student = (SStudent)it.next(); %> <tr> <td><%= student.getSname() %></td> <td><%= student.getSnumber() %></td> <td><%= student.getSbirthday() %></td> <td><%= student.getShobby() %></td> </tr> <% } %> </table> <%} %> </body> </html>

createdb.sql:

create table SStudent ( Sname char(20), Snumber char(13), Sbirthday varchar(10), Shobby varchar(50), unique(Sname), primary key(Snumber) );

insert.sql的内容则自己进行插入即可。

测试结果

在上面的步骤完成以后(你的各项环境都配置好了)就可以运行了。右击动态网页项目Student,

点击运行方式,选择run on Server,之后就会弹出index.html页面。然后输入关键字查询即可。

如果出现连接被拒的问题,你可以在cmd中打开你的数据库,然后用create和insert把你的表给建好,而且如果运行出错的话,cmd中也会有报错,可以仔细读错误类型,然后进行解决。 这个东西还是蛮复杂的,所以要有恒心,一点一点地进行解决。

最新回复(0)