最近从图书馆借了本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复制到项目的“WebRootWEB-INFlib”目录下,在项目工程目录视图中刷新(右键菜单→“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
共勉!