实验二、servlet编程
1、实验内容
创建第一个web应用程序HelloWorld,包含一个servlet名为“HelloWorldServlet”,为该servlet设置二个初始化参数,参数名分别为name和student_no,参数值分别为“学生姓名”和“学号”(每个同学使用自己的姓名和学号)。运行该servlet,输出格式为
学号为*********的***同学,你好!
这是一个简单的servlet程序
2、关键代码
HelloWorld/web.xml
……
<init-param>
<param-name>name</param-name>
<param-value>侍路登</param-value>
</init-param>
<init-param>
<param-name>student_no</param-name>
<param-value>0706550124</param-value>
</init-param>
……
HelloWorld/HelloWorldServlet.java
……
String name, student_no;
……
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print("学号为 " + student_no + " 的 " + name + " 同学,你好!");
out.print("<br>");
out.print("这是一个简单的servlet程序");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
……
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
publicvoid init() throws ServletException {
// Put your code here
name = this.getInitParameter("name");
student_no = this.getInitParameter("student_no");
}
3、实验结果截图
实验一、JavaBean和JDBC
1、实验内容
编写一个访问MySql数据库的JavaBean,并编写database.jsp调用该javabean建立对数据库的连接,进行数据库元数据编程,database.jsp中采用如下输出形式给出该数据源的一些限制情况。要求database.jsp中不出现包含数据库访问的代码。
2、关键代码
testJDBC/connectDB.java
package beansrc;
import java.sql.*;
publicclass connectDB
{
private Connection conn;
private String url;
private DatabaseMetaData dbmd;
private String drivername;
private String databaseproduct_name;
privateint maxLen;
privateint maxcharliteralLength;
privateint maxColumnsInTable;
privateint maxRowsize;
privateint maxConnections;
privateint maxTablesInSelect;
public connectDB() throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
url="jdbc:mysql://localhost:3306/" +
"testjdbc?useUnicode=true&characterEncoding=UTF-8";
conn = DriverManager.getConnection(url, "root", "root");
dbmd = conn.getMetaData();
drivername = dbmd.getDriverName();
databaseproduct_name = dbmd.getDatabaseProductName();
maxLen = dbmd.getMaxIndexLength();
maxcharliteralLength = dbmd.getMaxCharLiteralLength();
maxColumnsInTable = dbmd.getMaxColumnsInTable();
maxRowsize = dbmd.getMaxRowSize();
maxConnections = dbmd.getMaxConnections();
maxTablesInSelect = dbmd.getMaxTablesInSelect();
}
public String getDriverName()
{
return drivername;
}
public String getDatabaseproduct_name()
{
return databaseproduct_name;
}
public String getUrl()
{
return url;
}
publicint getMaxLen()
{
return maxLen;
}
publicint getMaxcharliteralLength()
{
return maxcharliteralLength;
}
publicint getMaxColumnsInTable()
{
return maxColumnsInTable;
}
publicint getMaxrowSize()
{
return maxRowsize;
}
publicint getMaxconnections()
{
return maxConnections;
}
publicint getMaxTablesInselect()
{
return maxTablesInSelect;
}
}
testJDBC/database.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="connectDBBean" class="beansrc.connectDB" scope="page"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test the JDBC</title>
<style type="text/css">
<!--
.STYLE1 {
font-family: "楷体";
font-weight: bold;
font-size: 20px;
}
-->
</style>
</head>
<body>
<table width="41%" height="155" border="0" align="center" bordercolor="#FFFFFF">
<tr>
<td><table width="108%" border="1" bordercolor="#000000" style="border:#B7CBFF 1px; font-size:15px">
<tr>
<td colspan="2" align="center"><p class="STYLE1">数据源的一些限制情况</p></td>
</tr>
<tr>
<td width="36%" align="center">驱动名称</td>
<td width="64%" align="center" bgcolor="#FFFFFF"><%=connectDBBean.getDriverName()%></td>
</tr>
<tr>
<td align="center">数据库的产品名称</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getDatabaseproduct_name()%></td>
</tr>
<tr>
<td align="center">数据库连接的URL</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getUrl()%></td>
</tr>
<tr>
<td align="center">maxLen:</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getMaxLen()%></td>
</tr>
<tr>
<td align="center">maxCharLiteralLen:</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getMaxcharliteralLength()%></td>
</tr>
<tr>
<td align="center">maxColumnsInTable:</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getMaxColumnsInTable()%></td>
</tr>
<tr>
<td align="center">maxRowSize: </td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getMaxrowSize()%></td>
</tr>
<tr>
<td align="center">maxConnections:</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getMaxconnections()%></td>
</tr>
<tr>
<td align="center">maxTablesInSelect:</td>
<td align="center" bgcolor="#FFFFFF"><%=connectDBBean.getMaxTablesInselect()%></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
3、实验结果截图
实验体会
经过几次上机实践,我对动态网页的制作有了一定的了解,并掌握了相关知识。感觉J2EE需要掌握的东西挺多的,有的也挺复杂的。
凡事“知其所以然”很重要,理解了原理,对掌握一种技术很关键。如果不能理解本质的东西,哪怕你在一台机器上弄好的东西,到另一台机器上也许你就不知所措了。
还有,对自己平时常用的集成开发环境一定要很熟悉,所谓“玩转IDE”。
总之,伴随着四次上机的结束,J2EE课程也到了尾声。四次课程上机实践让我知道了J2EE是怎么一回事,对“传说中”的JavaBean、JavaScript、JSP、JDBC、Servlet等等有了一个清晰的概念,也掌握了一些基础知识,这为以后进一步学习打下了基础。
实验三 Web程序
1. 摘要
在此,将三个框架Struts,Hibernate和Spring做一个集成,开发一个简单项目。在这个项目中,用户在登录页面输入登录名和密码,则跳转到另外一个欢迎页面,反之,将进入失败页面。
2. 实验内容
1.1. 目标
用户在登录页面输入登录名和密码,则跳转到另外一个欢迎页面,反之,将进入失败页面。
1.2. 需求分析
登录界面几乎是所有网站都会用到的功能,因此登陆界面制作的技术是需要不断的学习,不断的提高的。登录需要往数据库中查询,因此数据库的应用不可忽视。
1.3. 采用技术
j2ee,struts2,hibernate,spring.
1.4. 模块设计
1.完成ssh9
1) 创建数据库
2) 创建Web Project,名为ssh9
3) 添加Struts 2框架
4) 创建login.jsp
5) 创建LoginAction.java
6) 创建login_success.jsp
7) 创建login_error.jsp
8) 部署,测试struts2
2.集成Spring
9) 添加Spring框架
10) 添加Struts spring支持包spring-struts-plugin-2.0.11.jar
11) 修改web.xml内容
12) 创建struts.properties
13) 修改struts.xml
14) 修改applicationContext.xml
15) 部署测试
3.加载Hibernate框架
16) 添加Spring框架
17) 修改LoginAction.java
18) 修改applicationContext.xml
19) 部署测试
1.5. 编码实现
数据库内容如下:
建表语句:
CREATE TABLE user(
id int(10) not null auto_increment,
username varchar(10) not null,
password varchar(10) not null,
primary key (id)
)ENGINE=InnoDB DEFAULT CHARSET=GBK;
其中已有数据:
LoginAction.java代码如下:
package org;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.Query;
import org.hibernate.classic.Session;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username;
private String password;
private SessionFactory sessionFactory;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password=password;
}
public SessionFactory getSessionFactory(){
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory=sessionFactory;
}
public String execute() throws Exception{
Session session=sessionFactory.openSession();
String hql="from User u where u.username=? and u.password=?";
Query query=session.createQuery(hql);
query.setParameter(0,username);
query.setParameter(1,password);
List user=query.list();
session.close();
if(user.size()>0){
return SUCCESS;
}
else{
return ERROR;
}
}
}
User.hbm.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.User" table="user" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="10" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="10" not-null="true" />
</property>
</class>
</hibernate-mapping>
User.hbm.xml代码如下:
package org;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
LoginAction.java代码如下:
package org;
public class User implements java.io.Serializable {
private Integer id;
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
配置struts.xml文件,代码如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="login" class="org.LoginAction">
<result name="error">/login_error.jsp</result>
<result name="success">/login_success.jsp</result>
</action>
</package>
</struts>
创建login.jsp,代码如下:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>登录页面</title></head>
<body>
<form action="login.action" method="post">
用户登录<br>
用户名:<input type="text" name="username"/><br>
密码:<input type="password" name="password"/><br>
<input type="submit" value="登录"/><br>
</form>
</body>
</html>
创建login_success.jsp,代码如下:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<h2>您好!用户<s:property value="username"/>欢迎您登录成功</h2>
</body>
</html>
创建login_error.jsp,代码如下:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<h2>登录失败</h2>
</body>
</html>
修改web.xml内容,使得程序增加对Spring的支持
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
使得struts 2的类(struts.properties)的生成交给Spring完成。
struts.objectFactory=spring
修改applicationContext.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="kcw406880"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>org/User.hbm.xml</value></list>
</property></bean>
<bean id="login" class="org.LoginAction">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</beans>
3. 实验完成情况
程序运行:
输入后的结果:
或
完成的结果和预期一致,因此程序正确无误。
4. 实验总结
通过这次的实验我掌握了struts2,hibernate,spring技术的应用,使我有了基本的使用myeclipse来制作jsp网站的基础技术。
实验四 EJB编程
一、 实验目的:
1、学习并掌握J2EE开发网页的流程和具体步骤。
2、掌握并灵活运用DAO和VO的概念进行开发。
3、掌握J2EE开发框架Struts和Hibernate。
4、利用Access文件作为小型数据库进行开发。
二、 实验内容:
1、编写JavaBean:book,java,含有属性:bookid(String)bookname(String),booksprice(String)并编写getter,setter方法
2、在数据库中建立表格T_BOOK(BOOKID,BOOKNAME,BOOKPRICE)插入一些记录
3、实现图书记录的删除功能,首先显示全部图书的资料,通过每一个图书后面的“删除”链接,删除该图书记录。要求使用DAO和VO实现。
4、制作一个查询页面,输入两个数字,显示价格在两个数字之间的图书信息。使用DAO和VO实现
5、使用Struts和Hibernate对数据库请求进行响应,完成对数据库的操作。
三、实验相关知识
1.认识JavaBean
在JavaBean中,可以将控制逻辑、值、数据库访问和其他对象进行封装,并且其可以被其他应用来调用。实际上,JavaBean就是一种Java的组件技术。JavaBean的作用是向用户提供实现特定逻辑的方法接口,而具体的实现则封装在组建的内部,不同的用户就根据具体的应用情况来使用该组件的部分或全部控制逻辑。
2、编写JavaBean
在JavaBean中不仅要定义其成员变量,还对成员变量定义了setter/getter方法。对于每一个成员变量,定义了一个getter方法,一个setter方法。
JavaBean规定,成员变量的读写,通过getter 和 setter方法进行。此时,该成员变量成为其属性。对于每一个可读属性,定义一个getter方法,而对于每一个可写属性,定义了一个setter方法。
JavaBean组件属性编写时,需要满足:通过getter/setter方法来读/写变量的值,对应的变量首字母必须大写;属性名称由getter和setter方法决定
3、在JSP中使用JavaBean步骤
定义JavaBean;使用<jsp:useBean>标签;设置Javabean属性;使用<jsp:setProperty>标签;获取JavaBean属性,包括使用JSP表达式或者JSP程序段和使用jsp:getProperty动作两种
4、DAO和VO
如果要进行数据库查询,则必须在JSP中直接使用JDBC代码,来对数据库进行操作。但在实际的开发应用中处理方法是将访问数据苦的操作放到特定的类中去处理,JSP作为表示层,可以在表示层中调用这个特定的类提供的方法,去数据库进行操作。
对数据库进行操作的类叫DAO类。将某个对象属性封装为一个XXX对象,该XXX对象就是一个VO类。
使用此模式的好处:代码更容易维护,程序员的效率自然更高;在JSP中没有出现任何与JDBC有关的代码,编程人员不需要知道数据库的结构和细节,开发时便于分工。
四、实验步骤:
1、创建一个命名为Homework的Access数据库文件,在数据库中创建表Book,给字段Bookid添加数值,并将其作为主键,Bookname 字符串,Bookpirce货币。
2、Book类实现:
package PO;
public class Book {
private String bookid;
private String bookname;
private String bookprice;
public String getBookid() {
return bookid;
}
public void setBookid(String bookid) {
this.bookid = bookid;
}
public Book(){
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getBookprice() {
return bookprice;
}
public void setBookprice(String bookprice) {
this.bookprice = bookprice;
}
}
3、配置Hibernate文件:
i. Book.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="PO.Book" table="book">
<id name="bookid" column="bookid">
<generator class="assigned" />
</id>
<property name="bookname" column="bookname" />
<property name="bookprice" column="bookprice" />
</class>
</hibernate-mapping>
ii. hibernate.cfg.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.username"></property>
<property name="connection.url">jdbc:odbc:Homework</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.password"></property>
<property name="connection.driver_class">
sun.jdbc.odbc.JdbcOdbcDriver
</property>
<mapping resource="PO/Book.hbm.xml" />
</session-factory>
</hibernate-configuration>
4、数据访问层对象DAO:
BookDAO:
package mybean.book.dao;
import java.util.*;
import PO.Book;
public interface BookDAO {
public boolean delete(String bookid);
public List<Book> queryAll();
public List<Book> queryByPrice(String cond1,String cond2);
}
BookDAOImpl:
package mybean.book.dao.impl;
import java.util.ArrayList;
import java.util.List;
import mybean.book.dao.BookDAO;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import PO.Book;
public class BookDAOImpl implements BookDAO {
public boolean delete(String bookid){
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Book book = (Book) session.get(Book.class, bookid);
if (book != null) {
Transaction tran = session.beginTransaction();
session.delete(book);
tran.commit();
session.close();
return true;
}
session.close();
return false;
}
public List<Book> queryAll(){
List<Book> all = new ArrayList<Book>();
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Criteria cri = session.createCriteria(Book.class);
all = cri.list();
return all;
}
public List<Book> queryByPrice(String sp, String ep){
List<Book> all = new ArrayList<Book>();
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Criteria cri = session.createCriteria(Book.class);
cri.add(Restrictions.between("bookprice", sp, ep));
all = cri.list();
return all;
}
}
BookDAOFactory:
package mybean.book.factory;
import mybean.book.dao.BookDAO;
import mybean.book.dao.impl.BookDAOImpl;
public class BookDAOFactory {
public static BookDAO getBookDAOInstance() {
return new BookDAOImpl();
}
5、配置web.xml以及struts-config.xml。
编写SearchForm.SearchAction.DeleteActio,实现的各个Action的操作
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-appxmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.4"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>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="searchForm" type="presentation.SearchForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards/>
<action-mappings>
<action path="/search" name="searchForm" type="presentation.SearchAction" ></action>
<action path="/delete" type="presentation.DeleteAction" ></action>
<action path="/deleteResult" type="presentation.DeleteResultAction" ></action>
</action-mappings>
</struts-config>
6、主页面index.jsp提供入口进入查询或删除页面:
<%@ page language="java" import="java.util.*,mybean.book.vo.*"
pageEncoding="utf-8"%>
<html>
<head><title>图书管理系统</title></head>
<body>
<center><h1>图书管理系统</h1><hr>
<a href="search.jsp">图书查询</a><br><a href="delete.jsp">图书管理</a>
<hr></center>
</body>
</html>
7、查询页面search.jsp对给定价钱的书进行查询:
<%@ page language="java" import="java.util.*,PO.*" pageEncoding="utf-8"%>
<html><head><title>图书查询管理系统</title></head>
<body>
<center><h1>图书查询</h1><hr>
<form action="./search.do" method="post">
请输入查询价格范围:<br>
<input type="text" name="startPrice" />-
<input type="text" name="endPrice" />
<input type="submit" value="查找" />
</form>
<table style="font-size: 18" border="1">
<% List<Book> all = (List<Book>) request.getAttribute("searchBooks");
if (all != null) {
Iterator<Book> iter = all.iterator(); %>
<tr> <td>Bookid</td>
<td>Bookname</td>
<td>Bookprice</td> </tr><%
while (iter.hasNext()) {
Book book = (Book) iter.next();
String bookid = book.getBookid();
String bookname = book.getBookname();
String bookprice = book.getBookprice();%>
<tr> <td><%=bookid%></td>
<td><%=bookname%></td>
<td><%=bookprice%></td></tr><%}}%>
</table>
</center><hr><center><a href="index.jsp">返回主界面</a></center>
</body>
</html>
8、删除管理页面delete.jsp对指定书籍的书籍进行删除:
<%@ page language="java" import="java.util.*,PO.*" pageEncoding="utf-8"%>
<html><head><title>图书管理系统</title></head>
<body><center><h1>图书管理</h1><hr>
<table style="font-size: 18" border="1">
<% List<Book> all = (List<Book>) request.getAttribute("allBooks");
Iterator<Book> iter = all.iterator(); %>
<tr> <td>Bookid</td>
<td>Bookname</td>
<td>Bookprice</td></tr><%
while (iter.hasNext()) {
Book book = (Book) iter.next();
String bookid = book.getBookid();
String bookname = book.getBookname();
String bookprice = book.getBookprice();%>
<tr> <td><%=bookid%></td>
<td><%=bookname%></td>
<td><%=bookprice%></td>
<td><a href="./deleteResult.do?id=<%=bookid%>">删除</a></td>
</tr><%}%>
</table>
</center><hr><center><a href="index.jsp">返回主界面</a></center>
</body>
</html>
9、删除结果页面deleteResult.jsp显示删除结果:
<%@ page language="java" import="java.util.*,PO.*" pageEncoding="utf-8"%>
<html><head><title>图书管理系统</title></head>
<body><center><h1>图书管理</h1><hr><h4>${msg}</h4><br/>
<a href="./delete.do">确定</a></center><hr>
<center><a href="index.jsp">返回主界面</a></center>
</body>
</html>
五、 实验结果:
a) Index.jsp:
六、 实验小结:
通过这次试验,我学习并掌握J2EE开发网页的流程和具体步骤。了解DAO和VO,编写简单的DAO和VO;掌握并学习运用DAO和VO的概念进行开发。掌握J2EE开发框架Struts和Hibernate。认识JavaBean,并初步了解JavaBean的应用,掌握JavaBean的特殊属性,学会了用JavaBean编写简单的程序,在Jsp中使用JavaBean;开拓了视野,在学习和实践中掌握了新的知识。