Java EE项目开发实验报告

时间:2024.4.20

实验一 Struts 框架技术及应用

一、实验目的:

掌握 Struts 框架技术的原理及其在项目中的应用,掌握MVC 开发模式。

二、实验内容:

创建一个用于本次和后续 Java EE 项目的名为test 的数据库,并在数据库中创建一个名为user 的表,用于记录属于合法登录的用户信息:

create table user

{

id int auto_increment not null,

username varchar(10) not null,

password varchar(10) not null,

primary key(id)

};

1、参考教材 P25,创建一个Java EE 项目,通过JSP+JDBC 的方式实现用户登录和判断,并给出登陆成功或失败时相应的提示页面。

2、参考教材 P43,创建另一个Java EE 项目,通过JSP+Struts+JDBC 的方式进行登陆和判断。比较和体会使用Struts 之后与JSP+JDBC 的方式的区别。

3、在 JSP+Struts+JDBC 的实现方式下,于数据库中创建学生成绩表,实现学生成绩的增删改查等功能。

三、分析与设计过程:

数据库建立

1、用model1模式开发一个web登录程序,编写独立的JavaBean,通过JDBC访问test数据库中的user表来验证用户名和密码。

2、用model2模式开发一个web登录程序,页面效果与1的程序一样,改用Struts2控制页面的跳转,数据库的访问方式不变(仍然通过JDBC)。

四、测试数据与运行结果:

登录界面:

登录成功界面:

登录失败界面:

五、附录:

1、(1)连接数据库代码:

package org.easybooks.bookstore.jsbc;

import java.sql.*;

public class MySQLConnBean {   

    private Statement stmt = null;

    private Connection conn = null;

    ResultSet rs = null;

    //构造函数

    public MySQLConnBean(){}

    public void OpenConn()throws Exception

    {

        try

        {

            Class.forName("com.mysql.jdbc.Driver").newInstance();

            String url = "jdbc:mysql://localhost:3306/test";

            String user = "root";

            String password = "root";

            conn = DriverManager.getConnection(url,user,password);

        }

        catch(SQLException e)

        {

            System.err.println("Data.executeQuery: " + e.getMessage());

        }

    }

    //执行查询类的SQL语句,有返回集

    public ResultSet executeQuery(String sql)

    {

        rs = null;

        try

        {

            stmt = conn.createStatement(

                    ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

            rs = stmt.executeQuery(sql);

        }

        catch(SQLException e)

        {

            System.err.println("Data.executeQuery: " + e.getMessage());

        }

        return rs;

    }

    //关闭对象

    public void closeStmt()

    {

        try

        {

            stmt.close();

        }

        catch(SQLException e)

        {

            System.err.println("Date.executeQuery: " + e.getMessage());

        }

    }

    public void closeConn()

    {

        try

        {

            conn.close();

        }

        catch(SQLException e)

        {

            System.err.println("Data.executeQuery: " + e.getMessage());

        }

    }

}

(2)验证登录

<%@ page language="java" pageEncoding="gb2312" import="java.sql.*"%>

<jsp:useBean id="MySqlBean" scope="page"

              class="org.easybooks.bookstore.jsbc.MySQLConnBean" />

              class="org.easybooks.bookstore.jsbc.MySQLConnBean" />

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=gb2312">

    </head>

    <body>

        <%

            String usr=request.getParameter("username");       //获取提交的姓名

            String pwd=request.getParameter("password");       //获取提交的密码

            boolean validated=false;                    //验证成功标识

            //查询user表中的记录

            String sql="select * from user";

            MySqlBean.OpenConn();      //调用MySqlBean中加载JDBC驱动的方法

            ResultSet rs=MySqlBean.executeQuery(sql);       //取得结果集

            while(rs.next())

            {

                if((rs.getString("username").compareTo(usr)==0)

                                    &&(rs.getString("password").compareTo(pwd)==0))

                {

                    validated=true;                     //标识为true表示验证成功通过

                }

            }

            rs.close();

            MySqlBean.closeStmt();

            MySqlBean.closeConn();

            if(validated)

            {

                //验证成功跳转到welcome.jsp

        %>

                <jsp:forward page="welcome.jsp"/>

        <%

            }

            else

            {

                //验证失败跳转到error.jsp

        %>

                <jsp:forward page="error.jsp"/>

        <%

            }

        %>

    </body>

</html>

2、登录的action

package org.easybooks.bookstore.action;

import java.sql.*;

import org.easybooks.bookstore.jdbc.MySQLConnBean;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private String username;

private String password;

public String execute()throws Exception

{

   

    String usr = getUsername();

    String pwd = getPassword();

    boolean validated=false;

    MySQLConnBean MySqlBean=new MySQLConnBean();

    String sql="select * from user";

    MySqlBean.OpenConn();

    ResultSet rs=MySqlBean.executeQuery(sql);

    while(rs.next())

    {

    if((rs.getString("username").compareTo(usr)==0)&&(rs.getString("password").compareTo(pwd)==0))

       {

           validated=true;

       }

    }

    rs.close();

    MySqlBean.closeStmt();

    MySqlBean.closeConn();

    if(validated)

    {

       return "success";

      

    }

    else

    {

       return "error";

    }  

}

public void setUsername(String username)

{

    this.username=username;

   

}

public String getUsername()

{

    return username;

}

public String getPassword()

{

    return password;

}

public  void setPassword(String password)

{

    this.password=password;

}

}

实验二 Hibernate 框架技术及应用

一、实验目的:

掌握 Hibernate 框架技术的原理及其在项目中的应用,掌握ORM(对象关系映射)原理。

二、实验内容:

创建一个用于后续 Java EE 项目的名为test 的数据库,并在数据库中创建一个名为user的表,用于记录属于合法登录的用户信息:

create table user

{

id int auto_increment not null,

username varchar(10) not null,

password varchar(10) not null,

primary key(id)

};

1、参考教材 P55,准备好开发环境所需的开发包等,创建一个Java EE 项目,通过JSP+Hibernate 的方式实现用户登录和判断,并给出登陆成功或失败时相应的提示页面。体会和比较与前面的实验中所采用的模式的区别。

2、参考教材 P68,准备好开发环境所需的开发包等,创建一个Java EE 项目,通过JSP+DAO+Hibernate 的方式实现用户登录和判断,并给出登陆成功或失败时相应的判断界面。比较和体会与前面的实验中所采用的模式的区别。

3、在本次的实现方式下,于数据库中创建学生成绩表,实现学生成绩的增删改查等功能。

三、分析与设计过程:

1、用Hibernate时,在MyEclipse中添加Hibernate开发能力。用Hibernate改写前面Java EE程序的数据访问模块,以面向对象的方式访问test数据库的user表。

2、在1的实践中,利用ORM实现了对数据库表的对象化操作,在JSP页面中应用DAO(一种Java接口)操作Hibernate生成的User对象。

四、附录:

1、验证登录的代码:

<%@page import="java.util.List"  %>

<%@ page language="java" pageEncoding="gb2312" import="org.easybooks.bookstore.factory.*,org.hibernate.*"%>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=gb2312">

    </head>

    <body>

        <%

            String usr=request.getParameter("username");       //获取提交的姓名

            String pwd=request.getParameter("password");       //获取提交的密码

            boolean validated=false;                    //验证成功标识

            //查询user表中的记录

            String sql="From User u where u.username=? and u.password=?";

            Query query=HibernateSessionFactory.getSession().createQuery(sql);

            query.setParameter(0,usr);

            query.setParameter(1,pwd);

            List users=query.list();

           

                if(users.size()!=0)

                {

                    validated=true;                     //标识为true表示验证成功通过

                }

 

           HibernateSessionFactory.closeSession();

            if(validated)

            {

                //验证成功跳转到welcome.jsp

        %>

                <jsp:forward page="welcome.jsp"/>

        <%

            }

            else

            {

                //验证失败跳转到error.jsp

        %>

                <jsp:forward page="error.jsp"/>

        <%

            }

        %>

    </body>

</html>

2、validateUser()方法代码:

package org.easybooks.bookstore.dao.impl;

import java.util.List;

import org.easybooks.bookstore.dao.*;

import org.easybooks.bookstore.factory.*;

import org.easybooks.bookstore.vo.User;

import org.hibernate.*;

public class UserDAO implements IUserDAO{

    public User validateUser(String username, String password){

       String sql="From User u where u.username=? and u.password=?";

        Query query=HibernateSessionFactory.getSession().createQuery(sql);

        query.setParameter(0,username);

        query.setParameter(1,password);

        List users=query.list();

    if(users.size()!=0){

       User user=(User)users.get(0);

       return user;

    }

    HibernateSessionFactory.closeSession();

    return null;

    }

}

实验三 Struts 和Hibernate 框架集成应用

一、实验目的:

掌握 Struts 和Hibernate 框架技术的集成过程及其各自在项目中承担的作用。

二、实验内容:

创建一个用于后续 Java EE 项目的名为test 的数据库,并在数据库中创建一个名为user的表,用于记录属于合法登录的用户信息:

create table user

{

id int auto_increment not null,

username varchar(10) not null,

password varchar(10) not null,

primary key(id)

};

1、参考教材 P75,准备好开发环境所需的开发包等,创建一个Java EE 项目,通过JSP+Struts2+DAO+Hibernate 的方式实现用户登录和判断,并给出登陆成功或失败时相应的提示页面。比较和体会与前面的实验中所采用的模式的区别。

2、在本次的实现方式下,于数据库中创建学生成绩表,实现学生成绩的增删改查等功能。

三、分析与设计过程:

JSP作为视图V显示登录、成功或失败页,Struts2作为控制器C处理页面跳转,Hibernate用做数据模型M,它与前台程序的接口以DAO形式提供。

四、附录:

LoginAction类的代码:

package org.easybooks.bookstore.action;

import org.easybooks.bookstore.dao.*;

import org.easybooks.bookstore.dao.impl.*;

import org.easybooks.bookstore.vo.User;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

    private String username;

    private String password;

    //处理用户请求的execute方法

    public String execute()throws Exception{

       boolean validated=false;

       IUserDAO userDAO =new UserDAO();

       User user=userDAO.validateUser(getUsername(), getPassword());

       if(user!=null){

           validated=true;

       }

       if(validated){

           //验证成功返回字符串“success”

           return SUCCESS;

       }

       else

       {

           //验证失败返回字符串“error”

           return ERROR;

       }

    }

    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;

    }

}

实验四 Spring 和Hibernate 框架集成应用

一、实验目的:

掌握 Spring 和Hibernate 框架技术的集成过程及其各自在项目中承担的作用,掌握控制反转、依赖注入、面向方面编程(AOP)等的思想。

二、实验内容:

创建一个用于后续 Java EE 项目的名为test 的数据库,并在数据库中创建一个名为user的表,用于记录属于合法登录的用户信息:

create table user

{

id int auto_increment not null,

username varchar(10) not null,

password varchar(10) not null,

primary key(id)

};

1、参考教材 P88,准备好开发环境所需的开发包等,创建一个Java EE 项目,通过JSP+Spring+DAO+Hibernate 的方式实现用户登录和判断,并给出登陆成功或失败时相应的提示页面。比较和体会与前面的实验中所采用的模式的区别。

2、在本次的实现方式下,于数据库中创建学生成绩表,实现学生成绩的增删改查等功能。

三、分析与设计过程:

将Spring与Hibernate集成一起开发Web登录页程序,程序功能和页面效果同前,但要求用Spring来管理Hibernate和DAO组件。

四、附录:

1、validateUser()方法的代码

package org.easybooks.bookstore.dao.impl;

import java.util.List;

import org.easybooks.bookstore.dao.*;

import org.easybooks.bookstore.vo.User;

import org.hibernate.*;

public class UserDAO extends BaseDAO implements IUserDAO{

   public User validateUser(String username,String password){

       String sql="from User u where u.username=? and u.password=?";

       Session session=getSession();

       Query query=session.createQuery(sql);

       query.setParameter(0, username);

       query.setParameter(1, password);

       List users=query.list();

       if(users.size()!=0)

       {

          User user=(User)users.get(0);

          return user;

       }

       session.close();

       return null;

   }

}

2、applicationContext.xml文件添加代码:

<bean id="baseDAO" class="org.easybooks.bookstore.dao.BaseDAO">

         <property name="sessionFactory">

            <ref bean="sessionFactory"/>

         </property>

       </bean>

       <bean id="userDAO" class="org.easybooks.bookstore.dao.impl.UserDAO" parent="baseDAO"/>

3、validate.jsp文件代码如下:

<%@ page language="java" pageEncoding="gb2312" import="org.springframework.context.*,org.springframework.context.support.*,org.easybooks.bookstore.dao.*,org.easybooks.bookstore.dao.impl.*"%>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=gb2312">

    </head>

    <body>

        <%

            String usr=request.getParameter("username");       //获取提交的姓名

            String pwd=request.getParameter("password");       //获取提交的密码

            boolean validated=false;                    //验证成功标识

            ApplicationContext context=new FileSystemXmlApplicationContext("file:D:/MyEclipse9_Workspace/jsp_spring_dao_hibernate/src/applicationContext.xml");

            IUserDAO userDAO=(IUserDAO)context.getBean("userDAO");

            //直接使用持久层封装好了的验证功能

           

                if(userDAO.validateUser(usr,pwd)!=null)

                {

                    validated=true;                     //标识为true表示验证成功通过

                }

            if(validated)

            {

                //验证成功跳转到welcome.jsp

        %>

                <jsp:forward page="welcome.jsp"/>

        <%

            }

            else

            {

                //验证失败跳转到error.jsp

        %>

                <jsp:forward page="error.jsp"/>

        <%

            }

        %>

    </body>

</html>

实验五 Struts 和Spring 框架集成应用

一、实验目的:

掌握 Struts 和Spring 框架技术的集成过程及其各自在项目中承担的作用。

二、实验内容:

创建一个用于后续 Java EE 项目的名为test 的数据库,并在数据库中创建一个名为user的表,用于记录属于合法登录的用户信息:

create table user

{

id int auto_increment not null,

username varchar(10) not null,

password varchar(10) not null,

primary key(id)

};

1、参考教材 P99,准备好开发环境所需的开发包等,创建一个Java EE 项目,通过JSP+Struts2+Spring+JDBC 的方式实现用户登录和判断,并给出登陆成功或失败时相应的提示页面。比较和体会与前面的实验中所采用的模式的区别。

2、在本次的实现方式下,于数据库中创建学生成绩表,实现学生成绩的增删改查等功能。

三、分析与设计过程:

开发一个Web登录页程序,程序功能和页面效果同前,但要求用Spring来管理Struts2的控制器。

四、附录:

1、修改web.xml内容:

<?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>

     <display-name></display-name>

  <welcome-file-list>

    <welcome-file>login.jsp</welcome-file>

  </welcome-file-list>

</web-app>

2、创建struts.properties文件:

struts.objectFactory=spring

3、注册Action组件:

<?xml version="1.0" encoding="UTF-8"?>

<beans

    xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:p="http://www.springframework.org/schema/p"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="Login" class="org.easybooks.bookstore.action.LoginAction"/>

</beans>

4、struts.xml文件作如下修改:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<package name="struts" extends="struts-default">

<action name="Login" class="Login">

<result name="success">/welcome.jsp</result>

<result name="error">/error.jsp</result>

    </action>

  </package>

</struts>   

实验六 SSH 多框架整合应用

一、实验目的:

掌握 SSH 多框架整合的过程及其各自在项目中承担的作用。

二、实验内容:

创建一个用于后续 Java EE 项目的名为test 的数据库,并在数据库中创建一个名为user的表,用于记录属于合法登录的用户信息:

create table user

{

id int auto_increment not null,

username varchar(10) not null,

password varchar(10) not null,

primary key(id)

};

1、参考教材 P103,准备好开发环境所需的开发包等,创建一个Java EE 项目,通过JSP+Struts2+Spring+DAO+Hibernate 整合应用的方式实现用户登录和判断,并给出登陆成功或失败时相应的提示页面。比较和体会与前面的实验中所采用的模式的区别。

2、在本次的实现方式下,于数据库中创建学生成绩表,实现学生成绩的增删改查等功能。

三、分析与设计过程:

   用3个框架(Struts2/Spring/Hibernate)整合起来开发Web登录程序,程序功能页面效果同前,要求采用前面实验所描述的方式架构这个系统。

四、附录:

1、配置web.xml文件:

<?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>login.jsp</welcome-file>

    </welcome-file-list>

</web-app>

2、实现控制器Action,LoginAction.java代码如下:

package org.easybooks.bookstore.action;

import org.easybooks.bookstore.dao.*;

import org.easybooks.bookstore.vo.User;

import com.opensymphony.xwork2.ActionSupport;

import org.springframework.context.*;

import org.springframework.context.support.*;

public class LoginAction extends ActionSupport{

    private User user;

    //处理用户请求的execute方法

    public String execute()throws Exception{

       boolean validated=false;

       ApplicationContext context=new FileSystemXmlApplicationContext("file:");

       IUserDAO userDAO=(IUserDAO)context.getBean("userDAO");

       User u=userDAO.validateUser(user.getUsername(), user.getUsername());

       if(u!=null)

       {

           validated=true;

       }

       if(validated)

       {

           //验证成功返回字符串"success"

           return SUCCESS;

       }

       else

       {

           //验证失败返回字符串"error"

           return ERROR;

       }

    }

    public User getUser() {

       return user;

    }

    public void setUser(User user) {

       this.user = user;

    }

}

3、注册组件,applicationContext.xml文件添加代码:

<bean id="baseDAO" class="org.easybooks.bookstore.dao.BaseDAO">

       <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

    <bean id="userDAO" class="org.easybooks.bookstore.dao.impl.UserDAO" parent="baseDAO"/>

    <bean id="login" class="org.easybooks.bookstore.action.LoginAction"/>

更多相关推荐:
java实验报告完整版

实验报告计算机与信息工程学院实验中心学期20xx20xx课程名称Java程序设计实验班级信息1202姓名方逸梅学号1212100231指导老师费玉莲1Java程序设计独立实验教学安排一实验的教学方式安排及实验环...

Java实验报告

Java语言程序设计实验报告实验序号3一实验目的及要求1进一步熟练Java语法和常用方法的使用2进一步熟练Java程序结构3进一步提高算法设计与实现的能力4为后续章节的学习打下坚实的基础二实验设备环境实验室计算...

java实验报告实验六Java图形用户界面

信息工程学院Java程序设计实习报告JAVA图形用户界面实验六Java图形用户界面1实验目的1掌握图形用户界面基本组件2了解如何使用布局管理器对组件进行管理3掌握Java事件处理机制2实验内容实验题1编写一个模...

Java实验报告

JAVA课程标准实验报告学号1040501211姓名陈嘉生江苏科技大学计算机科学与工程学院基础部1实验一流程控制语句一实验目的1234二实验内容1安装开发环境JDK2编写一个JAVA应用程序在输出窗口显示quo...

Java语言基础实验报告

浙江大学城市学院实验报告课程名称面向对象程序设计实验项目名称Java语言基础实验学生姓名专业班级学号一实验目的和要求1掌握Java语言的基本数据类型字符串数组2掌握Java语言的运算符表达式语句3能够编写Jav...

java实验报告书3

浙江理工大学Java程序设计实验报告20xx20xx学年第二学期学院班级姓名学号任课教师信息学院11数字媒体技术2周咪咪20xx329700214宋瑾钰上课时间周二三四节数字媒体技术专业20xx年5月12345...

五子棋Java实验报告

五子棋JAVA实验报告一实验目的和要求1能够用编程语言实现一个简单的五子棋程序2在实际系统中使用实现人工智能的相关算法3进一步加深对人工智能算法的理解二五子棋的基本常识与原理1五子棋的起源五子棋是一种两人对弈的...

java实验报告4

广东工业大学实验报告学院专业班学号姓名成绩评定一实验目的1学习类的成员变量和成员方法的声明格式2学习java对象的创建和调用3学习参数传递4学习类的私有成员的定义访问方法已经共有成员的定义5理解类的构造方法构造...

Java实验报告1

Java实验报告

java实验报告11

实验报告20xx20xx学年第2学期课程名称JAVA程序设计实验名称字符串和正则表达式实验时间20xx年5月28日指导单位计算机学院软件学院软件工程系指导教师周莉学生姓名班级学号学院系计算机软件学专业计算机科学...

java实验九

Java语言程序设计实验报告九张鑫20xx1225实验名称实验日期Java数据流编程指导教师电子商务班级电子商务1302李鸿儒专业姓名

java实验报告类构造函数与继承

课程名称Java程序设计成绩评定实验项目名称实验5类构造函数与继承指导教师学生姓名学号专业班级实验项目类型基础实验地点验时间一实验目的与要求1理解类和对象的区别掌握构造函数的使用熟悉通过对象名引用实例的方法和属...

java 实验报告(27篇)