在真正进入代码编写前些进行一些工具的准备:

1.保证有一个可用的数据库,这里我用sql server 2000为例,2.拥有一个ide,如ecelise或myeclipse等,这里我使用的是myeclipse 8.5

3.数据库连接的架包;

这里数据库的安装就不说了,如果你安装的sql server 2000的话,你在使用jdbc进行连接时还需要打上sp3补丁;

一切准备就绪后我们就开始进入正题了:

1.首先我们在file--->New---->Web Project(也可以再Package Explore视图中右键一样的)

在Project Name 中输入项目名(这里先输入HelloWorld,算作我们的第一个Web项目),然后点击finish即可;可以看到右边就出现了一个Web项目:

具体上面每一部分的作用这里就不细说了,大家可查阅基础的书籍进行了解

2.然后我们将要连接数据的jar包先放到WEB-INF下的lib目录下(以后我们就将所需要的jar都放到该目录下即可):

由于有IDE支持负责和粘贴,我们只需要负责jar包后到IDE项目下的lib目录下就行粘贴就可以了

3.我们先在页面端index.jsp(也可以大家自己进行新建jsp或html页面)写一个简单的注册页面,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>数据库实战之注册</title>
</head>
<body>
<center>
<form name="form" action="RegisterServlet" method="post">
<input type="text" name="username" id="username" />
<input type="password" name="password" id="password" />
<input type="password" name="repassword" id="repassword" />
<input type = "submit" name = "register" value = "注册">
<input type = "reset" name = "re" value = "重置">
</form>
</center>
</body>
</html>

注意的问题:我们在一般情况下都是将编码格式改为utf-8的,<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

接下来我们先来看下页面的效果,先不管后台的交互;这里我们就需要将项目加载到应用服务器中,这里我们选用的是开源的服务器Tomcat 6.0,
具体安装可以见:java入门第五步之tomcat的安装http://www.cnblogs.com/shenliang123/archive/2012/04/24/2468036.html

4.接下来我们进行项目的部署:

首先点击左边的按钮进行项目的部署

在project选择你要部署的项目,这里选择HelloWorld,然后点击Add按钮,在出现的界面中的server选择tomcat服务器,这里选择tomcat 6.x---->点击finish

然后成功加载后点击OK即可,项目部署结束了

5.现在可以启动服务器了,在上图的右边按钮点击后在下拉框中选择tomcat 6.x----->Start后可以看到控制台会打印出信息---->待显示启动时间后表示加载完成了

6.现在你就可以打开浏览器进行访问了;在打开的浏览器地址中输入地址为:http://localhost:8080/HelloWorld/index.jsp

可以看到网页上输出:(这里我们页面的美观度先不去管)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

接下来我们要进行后台代码的编写了,要进行数据的交互了,我们可以看到我们上面新建的那个页面的后台处理是在RegisterServlet;

在进行代码书写时,我们先在sql server 2000中新建一个test数据库,字段分别为id,username,password其中id为自增

1.我们现在当前项目的src目录下新建servlet:选中src目录右键---->New----->servlet----->

Name选项中必须填入页面端需要访问的servlet名----->Next---->默认点击finish即可---->

现在我们可以去WEB-INF下的web.xml中看下:有如下代码

  <servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>xidian.sl.servlet.RegisterServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/servlet/RegisterServlet</url-pattern>
</servlet-mapping>

简单说下原理:页面端访问servlet----->先会到web.xml配置文件中的<servlet-mapping>标签下的<servlet-name>标签中寻找对应的名字----->找到后会根据

<url-pattern>标签下的名字去<servlet>标签下的<servlet-name>寻找名字对应的------>找到后根据<servlet-class>下的全名进行查找该servlet的具体位置;

看懂了上面的意思后,我们应该知道在新建一个servlet类时我们不一定选择New----->servlet,也可直接选择New----->classes,然后在到web.xml中手动进行配置,

前者做法是比较偷懒的做法,大家可以试试后者看;

2.接下来我们继续回到我们新建的servlet类中,我们可以看到IDE工具已经帮我们生成了部分代码,servlet中重要的就是doGet()和doPost()两个方法,具体调用哪个

方法,就看页面端的提交方式:由method="post"可以提交方式为post,因此我们的代码就可以先只在doPost中进行书写,

在书写代码前我们要进行数据库的连接操作,这里我采用的是自己封装好的类:http://www.cnblogs.com/shenliang123/archive/2012/04/19/2456665.html

为了方便起见我直接将该类放在与servlet的同一包下,以后大家自己做时可将其分开放置:

servlet类中的doPost方法代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
/**
* 使用request.getParameter(String str)可以获得页面端传递的参数,该方法的参数就是页面端传递的Name值
* */
String username = request.getParameter("username"); //账号
String password = request.getParameter("password"); //密码
//打印看是否已经获得该值
System.out.println("用户名:" +username + " 密码:"+password);
PrintWriter out = response.getWriter();
try {
/**
* 以下是根据账号来查询数据库,看该用户名是否已被申请
* */
String sql = "select id from users where username='"+username+"'";
DbConn dbConn = new DbConn();
String[][] data = dbConn.getData(sql);
if(data == null|| (data != null&& data.length == 0)){
//进行数据库的添加
String sql_insert = "insert into users(username, password) values('"+username+"', '"+password+"')";
dbConn.update(sql_insert);
out.println("<script language='javascript'>alert('用户注册成功!!');window.location.href='index.jsp';</script>");
out.flush();
out.close();
}else{
out.println("<script language='javascript'>alert('账号已被申请,请重输!');window.location.href='index.jsp';</script>");
}
}catch(Exception e){
e.printStackTrace();
}
}

然后访问页面端,输入用户名和账号后点击注册,返回成功后:

查看数据库:

到此我们的第一个web项目就宣告成功了,现阶段我们对页面端没有太多的控制,在以后的学习中会慢慢加入的

java入门第五步之数据库项目实战【转】的更多相关文章

  1. java入门第三步之数据库连接

    数据库连接可以说是学习web最基础的部分,也是非常重要的一部分,今天我们就来介绍下数据库的连接为下面学习真正的web打下基础 java中连接数据库一般有两种方式: 1.ODBC——Open Datab ...

  2. java入门第三步之数据库连接【转】

    数据库连接可以说是学习web最基础的部分,也是非常重要的一部分,今天我们就来介绍下数据库的连接为下面学习真正的web打下基础 java中连接数据库一般有两种方式: 1.ODBC——Open Datab ...

  3. java入门第四步之应用服务器的安装(Tomcat)【转】

    首先打开myeclipse,在myeclipse菜单栏下面有两个按钮: 左边的按钮是进行项目的部署的(即将项目部署到服务器上),右边的按钮是进行服务器的启动的,如果你安装了tomcat服务器,那你就可 ...

  4. 第二节:Java入门第一行代码

    前言 大家好,今天带来Java入门第一行代码的概述,希望你们喜欢 第一行代码 学习Java基础课程,学会使用eclipse,eclipse为Java集成开发坏境IDE,创建第一个Java源文件代码: ...

  5. Android零基础入门第9节:Android应用实战,不懂代码也可以开发

    原文:Android零基础入门第9节:Android应用实战,不懂代码也可以开发 通过上一期的学习,我们成功开发了Android学习的第一个应用程序,不仅可以在Android模拟器上运行,同时还能在我 ...

  6. Django-Multitenant,分布式多租户数据库项目实战(Python/Django+Postgres+Citus)

    Python/Django 支持分布式多租户数据库,如 Postgres+Citus. 通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库 ...

  7. JavaMail入门第五篇 解析邮件

    上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...

  8. Android JNI入门第五篇——基本数据类型使用

    前面讲到了java和native数据类型,这里就开始做一下使用: 第一步:新建工程 第二部:书写 java方法: public class NativeMethod { static { System ...

  9. 第二百五十五节,Bootstrap项目实战--关于

    Bootstrap项目实战--关于 html <!DOCTYPE html> <html lang="zh-cn"> <head> <me ...

随机推荐

  1. shape into blocks--source code in python based on pySpark

    这是微博深度和广度预测的原始代码,写了大约半个月,第一个版本不是这样的,但是这个版本包含所有需要的功能. 模块化的程度也更高.找工作前一直想用python完美解决这个问题,后来发现自己的方法和硬件都有 ...

  2. Intel微处理器学习笔记(五) 中断

    ▼ 中断是一个由硬件激发的过程,它中断当前正在执行的任何程序. ▼ 在Intel系列微处理器中,包括INTR和NMI(Non Maskable Interrupt)两个申请中断的引脚和一个响应INTR ...

  3. jquery 跳转到当前页面指定位置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Class.asSubclass浅谈

    这是java.lang.Class中的一个方法,作用是将调用这个方法的class对象转换成由clazz参数所表示的class对象的某个子类.举例来说, 上面的代码将strList.getClass() ...

  5. mysql概要(三)having

    1.运算符 2.模糊查询 3.where 后的判断基于表(表的直接内容),而不是基于结果(运算之后的别名)如: 可改成在where后再次重新计算判断: 或者使用having对结果判断: having多 ...

  6. poj3347Kadj Squares

    链接 这题其实与几何没太大关系,还不错的题目. 参考吴永辉的算法设计书. 用lefi.rigi分别表示正方形在x轴上的投影. 为了避免用小数,把边长都扩大sqrt(2)倍,这样lef1 = 0,rig ...

  7. maven的聚合与继承5

    一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module&g ...

  8. 对于syncedmen类的代码分析

    对于数据在cpu与GPU之间同步的问题,caffe中用syncedMemory这个类来解 决:在GPU模式下,并且使用CUDA时,可以用CaffeMallocHost函数与CaffeFreeHost函 ...

  9. 【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别

    转载请注明出处: http://blog.csdn.net/zhaokaiqiang1992 FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配 ...

  10. poj 1144 Network(无向图求割顶数)

    题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...