Java EE实用教程笔记----(1)第1章 Java EE平台及开发入门

最近从图书馆借了本JavaEE实用教程(第3版),打算学习SSH和SSM框架,特此做笔记,以飨读者.

《JavaEE实用教程(第3版)》是2018年电子工业出版社出版的图书,作者是郑阿奇。

本书包含实用教程、实验指导和综合应用实习三部分。实用教程部分包括Java EE平台及开发入门、Struts 2基础、Struts 2标签库、Struts 2类型转换及输入校验、Struts 2应用进阶、Struts 2综合应用案例、Hibernate基础、Hibernate映射机制、Hibernate对持久化对象的操作、Hibernate高级特性、Hibernate与Struts 2整合应用案例、MyBatis基础、Spring基础、Spring MVC基础、Spring的其他功能、用Spring整合各种Java EE框架等。在每一章后配套相应的习题。与实用教程配套的实验有13个,先引导操作完成任务,然后是思考与练习。最后配套综合应用实习,介绍学生成绩管理系统的开发。--华信教育资源网。

一:Java EE的开发方式

1.Java Web开发

这是传统的方式,其核心技术是JSP、Servlet与JavaBean。

2.Java框架开发

(1)轻量级Java EE

例如SSH2(Struts/Struts 2、Hibernate、Spring,传统企业框架)SSM(Spring MVC、Spring、MyBatis,多应用于对并发性能要求很高的互联网项目)开发出的应用通常运行在普通Web服务器(如Tomcat)上。

(2)经典企业级Java EE

以EJB 3+JPA为核心,系统需要运行于专业的Java EE服务器(如WebLogic、WebSphere)之上,通常只有开发商用的大型企业项目才会用到。

简而言之,我们现在学习的就是轻量级框架--SSH以及SSM.

开发模型图

一个简单的Java EE程序

这篇文章实在太短了,附上一个简单的传统JSP、Servlet与JavaBean开发的JavaEE项目,以后的教程就以这个为主:

1.程序的结构

在网站规模不大、功能简单时,Java EE用传统的Java Web方式开发:用JSP制作前端页面;编写Servlet实现程序业务逻辑处理和流程控制;JavaBean将表封装成对象,提供对数据的面向对象访问;JDBC直接操作后台数据库。程序结构如图所示:

2.实例:“图书管理系统”登录功能

【实例1.1】采用JSP+Servlet+JavaBean+JDBC方式开发一个Web登录程序。

(1)建立数据库与表。

在SQL Server 2008/2012中创建图书管理数据库,命名为MBOOK,其中建立一个登录信息表login,表结构见附录A.1。表建好后,向其中录入两条数据记录。最后建好的数据库、表及其中数据在SQL Server 2008/2012的SQL Server Management Studio中显示的效果,如图所示:

(3)创建Java EE项目。

在MyEclipse 2014中,选择主菜单“File”→“New”→“Web Project”,出现如图1.27所示的“New Web Project”窗口,填写“Project Name”栏(项目名)为“bookManage”:

(4)创建JDBC类。

由于登录时要对数据库进行查询,从图1.23可知,直接访问数据库的是JDBC,故要创建JDBC类。创建之前先建一个包用于存放JDBC类,右击项目src文件夹,选择菜单“New”→“Package”,在“New Java Package”窗口输入包名“org.db”,如图1.30所示,单击“Finish”按钮。

右击src,选择菜单“New”→“Class”,出现如图1.31所示的“New Java Class”对话框。

单击“Package”栏后的“Browse…”按钮,指定类存放的包为“org.db”,输入类名“DBConn”,单击“Finish”按钮。

编写DBConn.java,代码为:

package org.db;

import java.sql.*;

public class DBConn{

public static Connection conn; //Connection对象(连接)

private static String url = "jdbc:mysql://localhost:3306/mbook?useUnicode=true&characterEncoding=utf-8";

private static String user = "ssh";

private static String password = "ssh";

//获取数据库连接

public static Connection getConn(){

try {

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

/**编写连接字符串,创建并获取连接*/

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

return conn;

}catch(Exception e){

e.printStackTrace();

return null;

}

}

//关闭连接

public static void CloseConn(){

try{

conn.close(); //关闭连接

}catch(Exception e){

e.printStackTrace();

}

}

}

(5)添加JDBC驱动包。

JDBC类编写完成后,还需要将JDBC驱动包sqljdbc4.jar复制到项目的“\WebRoot\WEB-INF\lib”目录下,在项目工程目录视图中刷新(右键菜单→“Refresh”)即可。

(6)编写JSP。

本例要写3个JSP文件:login.jsp(登录页)、main.jsp(欢迎主页)和error.jsp(出错处理页)。在项目工程目录树中,右击WebRoot项,从弹出的菜单中选择“New”→“File”,在如图1.32所示的窗口中输入文件名login.jsp,单击“Finish”按钮。

在代码编辑器中编写login.jsp(登录页)文件,代码为:

<%@ page language="java" pageEncoding="gb2312"%>

<html>

<head>

<title>图书管理系统</title>

</head>

<body bgcolor="#71CABF">

<form action="loginServlet" method="post">

<table>

<caption>用户登录</caption>

<tr>

<td>登录名</td>

<td><input name="name" type="text" size="20"/></td>

</tr>

<tr>

<td>密码</td>

<td><input name="password" type="password" size="21"/></td>

</tr>

</table>

<input type="submit" value="登录"/>

<input type="reset" value="重置"/>

</form>

</body>

</html>

接下来,用同样的方法在项目WebRoot目录下再创建两个JSP文件:main.jsp和error.jsp。

欢迎主页main.jsp,代码如下:

<%@ page language="java" pageEncoding="gb2312" import="org.model.Login"%>

<html>

<head>

<title>欢迎使用</title>

</head>

<body>

<%

Login login=(Login)session.getAttribute("login"); //从会话中取出 Login 对象

String lgn=login.getName(); //通过 JavaBean 对象获取用户名

%>

<%=lgn%>,您好!欢迎使用图书管理系统。

</body>

出错处理页error.jsp,代码如下:

<%@ page language="java" pageEncoding="gb2312"%>

<html>

<head>

<title>出错</title>

</head>

<body>

登录失败!单击<a href="login.jsp">这里</a>返回

</body>

</html>

(7)编写Servlet。

在项目src下建立包org.servlet,在包中创建名为LoginServlet的类(Servlet类)。

编写LoginServlet.java,代码为。

package org.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.model.*;

import org.dao.*;

@WebServlet("/loginServlet")

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public LoginServlet() {

super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("gb2312"); //设置请求编码

//该类为项目与数据的接口(DAO接口),用于处理数据与数据库表的一些操作

LoginDao loginDao = new LoginDao();

Login l = loginDao.checkLogin(request.getParameter("name"), request.getParameter("password"));

if(l!=null){ //如果登录成功

HttpSession session = request.getSession(); //获得会话,用来保存当前登录用户的信息

session.setAttribute("login", l); //把获取的对象保存在 Session 中

response.sendRedirect("main.jsp"); //验证成功跳转到欢迎主页 main.jsp

}else{

response.sendRedirect("error.jsp"); //验证失败跳转到错误处理页 error.jsp

}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

8)配置Servlet。

Servlet编写完成后,必须在项目web.xml中进行配置方可使用。

修改项目web.xml,内容如下:

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

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

<servlet>

<servlet-name>loginServlet</servlet-name>

<servlet-class>org.servlet.LoginServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>loginServlet</servlet-name>

<url-pattern>/loginServlet</url-pattern>

</servlet-mapping>

<display-name>bookManage</display-name>

<welcome-file-list>

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

</welcome-file-list>

</web-app>

(9)构造JavaBean。

在项目src下建立包org.model,其中创建名为Login的Java类,为数据库login表构造一个JavaBean--Login.java代码为:

package org.model;

public class Login {

//属性

private Integer id; //用户ID

private String name; //用户名

private String password; //密码

private boolean role; //角色

//属性 id 的 get/set 方法

public Integer getId(){

return this.id;

}

public void setId(Integer id){

this.id = id;

}

//属性 name 的 get/set 方法

public String getName(){

return this.name;

}

public void setName(String name){

this.name = name;

}

//属性 password 的 get/set 方法

public String getPassword(){

return this.password;

}

public void setPassword(String password){

this.password = password;

}

//属性 role 的 get/set 方法

public boolean getRole(){

return this.role;

}

public void setRole(boolean role){

this.role = role;

}

}

(10)实现DAO。

前面Servlet开发中用到了LoginDao,它主要用于处理底层数据与数据库表的操作。在src下建立org.dao包,在包中创建LoginDao类--LoginDao.java代码为:

package org.dao;

import java.sql.*;

import org.model.*;

import org.db.*;

public class LoginDao {

Connection conn; //数据库连接对象

public Login checkLogin(String name, String password){ //验证登录用户名和密码

try{

conn = DBConn.getConn(); //获取连接对象

PreparedStatement pstmt = conn.prepareStatement("select * from login where name=? " + "and password=?");

pstmt.setString(1, name); //设置 SQL 语句参数1(用户名)

pstmt.setString(2, password); //设置 SQL 语句参数2(密码)

ResultSet rs = pstmt.executeQuery(); //执行查询,返回结果集

if(rs.next()){ //返回结果不为空,表示有此用户信息

Login login = new Login(); //通过JavaBean对象保存值

login.setId(rs.getInt(1));

login.setName(rs.getString(2));

login.setPassword(rs.getString(3));

login.setRole(rs.getBoolean(4));

return login; //返回已经设值的JavaBean对象

}

return null; //无此用户,验证失败,返回null

}catch(Exception e){

e.printStackTrace();

return null;

}finally{

DBConn.CloseConn(); //关闭连接

}

}

}

(11)部署Java EE项目。

项目开发完成,要部署到服务器上方能运行。单击工具栏 (Deploy MyEclipse J2EE Project to Server…)按钮,弹出如图1.33所示的“Project Deployments”对话框,将新建的Java EE项目部署到Tomcat中。

(12)运行浏览。

启动Tomcat ,在浏览器中输入“http://localhost:8080/bookManage”并回车,将显示如图所示的登录页面。输入用户名、密码(必须是数据库login表中已有的)。

单击“登录”按钮提交表单,转到如图1.35所示的主页面并回显欢迎信息。

当然,若是输入错误的密码,或者输入一个数据库login表中不存在的用户名和密码,提交后则会跳转到如图1.36所示的出错页。

中途如果有错,可以设置断点调试错误,包括用IDE导出导入项目,过于简单,在这里就不浪费大家时间了,加油↖(^ω^)↗。

代码我已经上传到码云GitEE上了,码云的下载教程在公众号的历史消息里面也有,这是本系列文章源代码的地址,会持续更新:

https://gitee.com/jahero/bookManage.git

共勉!

原文发布于微信公众号 - 浩Coding(gh_c4a2e63d2ca7)

原文发表时间:2018-10-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券