Eclipse-jee还是不如MyEclipse好用,还是跟着课本用MyEclipse吧。JDK的配置不再赘述。
集成Tomcat
在Window-Preferences-MyEclipse-Servers-Tomcat-Tomcat8.x
下激活Tomcat8.x并提供安装路径:
展开Tomcat8.x
,在JDK
项中选择之前配置的额外下载安装的JDK:
集成好后,可以在此处运行测试:
后面的使用和Eclipse-jee里基本一致。
建立与MySQL的连接
在此处打开数据库浏览器模式:
在左侧DB Browser
中右键-New一个数据库连接:
这里是可以点击Test Driver测试有没有连接成功的。
创建项目
在File-New
的Project
或者Other
里可以找到普通的Web Project
:
注意版本即可:
项目结构和demo
一个Java Web项目的典型结构是这样的:
按照课本上的例子写了一个测试程序,只是把SQL Server换成了MySQL,毕竟现在是在Deepin下学习了。
创建了数据库和测试表:
CREATE DATABASE TEST;
USE TEST;
CREATE TABLE userTable
(
id INT auto_increment PRIMARY KEY,
username VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL
);
INSERT INTO userTable
VALUES(1,'lzh','123456');
编写代码,首先是src下建的org.esaybooks.test.jdbc包中的用来提供SQL服务的SqlSrvDBConn类:
package org.esaybooks.test.jdbc;
import java.sql.*;
public class SqlSrvDBConn {
private Statement stmt;
private Connection conn;
ResultSet rs;
public SqlSrvDBConn(){
stmt=null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/TEST?useSSL=true&characterEncoding=utf8",
"root",
"3838438");
}catch(Exception e){
e.printStackTrace();
}
rs=null;
}
public ResultSet executeQuery(String sql){
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("Data.executeQuery:"+e.getMessage());
}
}
public void closeConn(){
try{
conn .close();
}catch(SQLException e){
System.err.println("Data.executeQuery:"+e.getMessage());
}
}
}
JSP文件均放在WebRoot目录下,创建JSP文件时课本上直接选择了最纯粹的File,而不是JSP File,这个以后再研究有啥区别。
登录页面login.jsp:
<%@page language="java" pageEncoding="gb2312"%>
<html>
<head>
<title>简易留言板</title>
</head>
<body bgcolor="#E3E3E3">
<form action="validate.jsp" method="post">
<table>
<caption>用户登陆</caption>
<tr>
<td>用户名:</td>
<td>
<input type="text" name="username" size="20"/>
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="password" size="20"/>
</td>
</tr>
</table>
<input type="submit" value="登陆">
<input type="reset" value="重置">
</form>
如果没注册单击<a href="">这里</a>注册
</body>
</html>
验证页面validate.jsp:
<%@page language="java" pageEncoding="gb2312" import="java.sql.*" %>
<jsp:useBean id="SqlSrvDB" scope="page" class="org.esaybooks.test.jdbc.SqlSrvDBConn"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body>
<%
request.setCharacterEncoding("gb2312");
String usr=request.getParameter("username");
String pwd=request.getParameter("password");
boolean validated=false;
String sql="SELECT * FROM userTable;";
ResultSet rs=SqlSrvDB.executeQuery(sql);
while(rs.next())
{
if((rs.getString("username").trim().compareTo(usr)==0)
&& (rs.getString("password").compareTo(pwd)==0))
{
validated=true;
}
}
rs.close();
SqlSrvDB.closeStmt();
SqlSrvDB.closeConn();
if(validated)
{
%>
<jsp:forward page="main.jsp"/>
<%
}
else
{
%>
<jsp:forward page="error.jsp"/>
<%
}
%>
</body>
</html>
登录失败页面error.jsp:
<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head>
<title>出错</title>
</head>
<body>
登录失败!单击<a href="login.jsp">这里</a>返回
</body>
</html>
登录成功的主页面main.jsp:
<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head>
<title>留言板信息</title>
</head>
<body>
<%out.print(request.getParameter("username")); %>
,您好!欢迎登录留言板
</body>
</html>
还要把MySQL驱动再放一份到本工程/WebRoot/WEB-INF/lib/
下,这也是我困惑的一个地方:
为了能从login.jsp开始,要修改WEB-INF文件夹下的web.xml配置文件,在下面可以切换成source源码方式:
<?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">
<display-name>jsp_jdbc</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
重点也就是在<welcome-file>
这个双标签里,要改成启动的那个页面,删去不必要的<welcome-file>
双标签。
部署和测试
Tomcat服务器是需要部署的,在这之前先确保关闭了Tomcat服务器。点击这里将项目部署到服务器:
这就用到了前面集成好的Tomcat8.x服务器,点击add按钮就可以部署到新的服务器上了:
部署完之后是这样的:
如果修改了项目,那么可以在这里点击Redeploy重新部署。
昨天老师讲了,对于部署完成的项目,可以在Tomcat安装目录下的webapps里看到对应的子目录:
root@hostlzh:/usr/local/software/apache-tomcat-8.5.29# ls
backup lib NOTICE temp
bin LICENSE RELEASE-NOTES webapps
conf logs RUNNING.txt work
root@hostlzh:/usr/local/software/apache-tomcat-8.5.29# ls webapps/
docs examples host-manager jsp_jdbc manager ROOT
部署好以后,启动Tomcat服务器。在地址栏输入http://localhost:8080/项目名称/
就可以测试了:
登录成功时:
登录失败时:
移除部署
部署和移除部署都应当在Tomcat服务器关闭的情况下执行。
在部署按钮打开的Project Deployments对话框里选中项目下部署好的Tomcat8.x服务器,点Remove就可以方便的移除。
移除以后,在Tomcat安装路径下的webapps目录下再看一下:
root@hostlzh:/usr/local/software/apache-tomcat-8.5.29# ls webapps/
docs examples host-manager manager ROOT
确实被移除了。