ant指定servlet版本_使用ant编译打包、部署简单的javaweb项目 --02

和上一次的并没胡什么不同,也就是多了一个使用ant初始化mysql数据库

目录结构:

D:\code\kongee\ant_web_three

λ tree /f

卷 软件 的文件夹 PATH 列表

卷序列号为 000D-CD8E

D:.

│ .classpath

│ .project

│ build.xml

│ studentbak.sql

├─.settings

│ .jsdtscope

│ org.eclipse.jdt.core.prefs

│ org.eclipse.wst.common.component

│ org.eclipse.wst.common.project.facet.core.xml

│ org.eclipse.wst.jsdt.ui.superType.container

│ org.eclipse.wst.jsdt.ui.superType.name

├─src

│ └─com

│ └─laolang

│ ├─dao

│ │ IStudentDao.java

│ │ StudetDao.java

│ │

│ ├─modle

│ │ Student.java

│ │

│ ├─servlet

│ │ HelloServlet.java

│ │ ShowServlet.java

│ │

│ └─util

│ DButil.java

│ student-sql.properties

└─WebContent

│ hello.jsp

│ index.jsp

│ show.jsp

├─META-INF

│ MANIFEST.MF

└─WEB-INF

│ web.xml

└─lib

mysql-connector-java-5.1.28-bin.jar

D:\code\kongee\ant_web_three

λ

代码:

modle

com.laolang.modle.Student

package com.laolang.modle;

public class Student {

public Student() {

super();

}

public Student(String name, int age, String sex) {

super();

this.name = name;

this.age = age;

this.sex = sex;

}

public Student(int id, String name, int age, String sex) {

super();

this.id = id;

this.name = name;

this.age = age;

this.sex = sex;

}

@Override

public String toString() {

return "Student [id=" + id + ", name=" + name + ", age=" + age

+ ", sex=" + sex + "]";

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

private int id;

private String name;

private int age;

private String sex;

}

dao

IStudentDao

package com.laolang.dao;

import java.util.List;

import com.laolang.modle.Student;

public interface IStudentDao {

public List selectAll() ;

}

StudentDao

package com.laolang.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.laolang.modle.Student;

import com.laolang.util.DButil;

public class StudetDao implements IStudentDao {

@Override

public List selectAll() {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List stus = new ArrayList();

try {

conn = DButil.getConnection();

String sql = "select stuid,stuname,stuage,stusex from student";

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

while( rs.next() ){

Student stu = new Student();

stu.setId(rs.getInt("stuid"));

stu.setName(rs.getString("stuname"));

stu.setAge(rs.getInt("stuage"));

stu.setSex(rs.getString("stusex"));

stus.add(stu);

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

DButil.close(rs);

DButil.close(ps);

DButil.close(conn);

}

return stus;

}

}

util

student-sql.properties

jdbc.url=jdbc:mysql://localhost:3306/student

jdbc.username=root

jdbc.userpassword=root

jdbc.driver=com.mysql.jdbc.Driver

com.laolang.util.DButil

package com.laolang.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ResourceBundle;

public class DButil {

/** 数据库连接地址 */

private static String URL;

/** 数据库用户名 */

private static String USERNAME;

/** 数据库密码 */

private static String USERPASSWORD;

/** mysql 驱动 */

private static String DRIVER;

/** The rb. */

private static ResourceBundle rb = ResourceBundle

.getBundle("com.laolang.util.student-sql");

/**

* 使用静态代码块加载驱动

*/

static {

URL = rb.getString("jdbc.url");

USERNAME = rb.getString("jdbc.username");

USERPASSWORD = rb.getString("jdbc.userpassword");

DRIVER = rb.getString("jdbc.driver");

try {

Class.forName(DRIVER);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws SQLException {

Connection con = null;

con = DriverManager.getConnection(URL, USERNAME, USERPASSWORD);

return con;

}

public static void close(Connection con) {

try {

if (con != null)

con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

public static void close(PreparedStatement ps) {

try {

if (ps != null)

ps.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

public static void close(ResultSet rs) {

try {

if (rs != null)

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

servlet

com.laolang.servlet.HelloServlet

package com.laolang.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class HelloServlet

*/

public class HelloServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public HelloServlet() {

super();

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

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

request.setAttribute("hello", "world");

RequestDispatcher dis = request.getRequestDispatcher("hello.jsp");

dis.forward(request, response);

}

}

com.laolang.servlet.ShowServlet

package com.laolang.servlet;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.laolang.dao.IStudentDao;

import com.laolang.dao.StudetDao;

import com.laolang.modle.Student;

/**

* Servlet implementation class ShowServlet

*/

public class ShowServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public ShowServlet() {

super();

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

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

IStudentDao dao = new StudetDao();

List stus = dao.selectAll();

for( Student stu : stus ){

System.out.println(stu);

}

request.setAttribute("stus", stus);

request.getRequestDispatcher("show.jsp").forward(request, response);

}

}

jsp

index.jsp

pageEncoding="UTF-8"%>

Insert title here

This is a jsp page!

hello

show

hello.jsp

pageEncoding="UTF-8"%>

Insert title here

Hello:${hello }

show.jsp

pageEncoding="UTF-8"%>

Insert title here
学号姓名年龄性别

//@SuppressWarnings("unchecked")

List stus = (List)request.getAttribute("stus");

for( Student stu : stus){

%>

}

%>

sql

studentbak.sql

/*

SQLyog Ultimate v11.11 (64 bit)

MySQL - 5.5.38 : Database - student

*********************************************************************

*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/`student` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `student`;

/*Table structure for table `student` */

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (

`stuid` int(11) NOT NULL AUTO_INCREMENT,

`stuname` varchar(20) DEFAULT NULL,

`stuage` int(11) DEFAULT NULL,

`stusex` varchar(2) DEFAULT NULL,

PRIMARY KEY (`stuid`)

) ENGINE=InnoDB AUTO_INCREMENT=1006 DEFAULT CHARSET=utf8;

/*Data for the table `student` */

insert into `student`(`stuid`,`stuname`,`stuage`,`stusex`) values (1001,'xiaodaima',24,'男'),(1002,'小叶子',25,'女'),(1003,'老狼',34,'男'),(1004,'龙女',43,'女'),(1005,'天涯',18,'男');

/*insert into `student`(`stuid`,`stuname`,`stuage`,`stusex`) values (1001,'小代码',24,'男'),(1002,'小叶子',25,'女'),(1003,'老狼',34,'男'),(1004,'龙女',43,'女'),(1005,'天涯',18,'男');*/

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

build.xml

初始化工作结束!

打包完成!

数据库初始化完成!

use student;

select database();

show tables;

select * from student;

数据库测试完成!

JAVA_HOME:${env.JAVA_HOME}

CLASSPATH:${env.CLASSPATH}

tomcat_home:${env.tomcat_home}

${web.lib}

${mysqldriver}

已发布到Tomcat!

清理完成!

执行过程:

D:\code\kongee\ant_web_two>ant deploy

Buildfile: D:\code\kongee\ant_web_two\build.xml

mysql-init:

[mysql-admin] Executing resource: D:\code\kongee\ant_web_two\studentbak.sql

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 1 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 5 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 0 rows affected

[mysql-admin] 15 of 15 SQL statements executed successfully

[echo] 数据库初始化完成!

mysql-test:

[mysql-admin] Executing commands

[mysql-admin] 0 rows affected

[mysql-admin] database()

[mysql-admin] student

[mysql-admin]

[mysql-admin] 0 rows affected

[mysql-admin] TABLE_NAME

[mysql-admin] student

[mysql-admin]

[mysql-admin] 0 rows affected

[mysql-admin] stuid,stuname,stuage,stusex

[mysql-admin] 1001,xiaodaima,24,男

[mysql-admin] 1002,小叶子,25,女

[mysql-admin] 1003,老狼,34,男

[mysql-admin] 1004,龙女,43,女

[mysql-admin] 1005,天涯,18,男

[mysql-admin]

[mysql-admin] 0 rows affected

[mysql-admin] 4 of 4 SQL statements executed successfully

[echo] 数据库测试完成!

init:

[mkdir] Created dir: D:\code\kongee\ant_web_two\build

[mkdir] Created dir: D:\code\kongee\ant_web_two\build\classes

[mkdir] Created dir: D:\code\kongee\ant_web_two\build\war

[echo] 初始化工作结束!

compile:

[javac] Compiling 6 source files to D:\code\kongee\ant_web_two\build\classes

[echo] 编译完成!

war:

[war] Building war: D:\code\kongee\ant_web_two\build\war\anthello.war

[echo] 打包完成!

deploy:

[copy] Copying 1 file to D:\program\program\java\tomcat\tomcat\webapps

[echo] 已发布到Tomcat!

BUILD SUCCESSFUL

Total time: 6 seconds

D:\code\kongee\ant_web_two>

在firefox中的运行效果:

index.jsp

hello.do

show.do

修改studentbak.sql将xiaodaima修改为小代码

问题:

1、关于ant的构建目录和eclipse class的存放目录

由于使用ant时构建目录在build,而eclipse的class存放目录也是在build,所以每次使用ant进行部署时,必须在eclipse中进行project->clean操作才可以,否则出现下面的错误

我不理解这到底是为什么,如果说是由于eclipse自动编译的class文件的问题,那么为什么HelloServlet就没有问题?

PS:这里说的clean是指:在进行ant deploy之前,必须要clean,且clean后不能在eclipse中进行任何操作,否则要再次clean,不然还是会出现上图中的错误,我修改了ant的构建目录后,依然不行,这个问题让我很不解,有哪个高手指点下?

2、关于ant 中的sql

使用ant进行mysql操作的时候,不能使用path定义的classpath,也就是说在sql中不能使用classpathref,而应该使用property指向mysql的jar包的相对路径,再在sql中使用classpath引用 这个property,否则会出现Class Not Found: JDBC driver com.mysql.jdbc.Driver could not be loaded

如果想要显示sql的执行结果,可以将print指定为true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值