创建Java Web工程


前提

索引文章 中我提到过,我们用Java Web来写服务器程序,这篇文章我们真正的进入到编码的环节。


本文所需的前置知识


IDE的选择

市面上能编写Java Web项目的IDE应该说数不胜数了,但是最主流的IDE当属Eclipse——在Android Studio发布后被Google放弃支持的IDE。之所以最主流,是因为它具有体积小…这一个优点。

因为用它编写代码的时候很多事情都需要手动来做,因此我选择了一个“非主流”的IDE——NetBeans


NetBeans的安装

本来这里我想一句话带过的,但是发现有两个步骤必须说一下:

1.下载按钮在主页右边,如果没看到,你可能会点上面导航栏的“NetBeans IDE”,在看到一堆介绍之后不知所措;

下载按钮

2.下载页面为我们提供了多个版本,我们选择第二个,带有Java EE的版本(至于Java EE是什么,自己查吧,不懂也没关系,你知道这个版本能写Java Web服务器程序就行了)。

版本选择

下载下来之后的安装我就不赘述了。


创建并配置项目

1.新建项目

打开IDE,文件->新建项目

新建项目

在弹出的窗口中,左边选择Java Web,右边选择Web应用程序,点击下一步

步骤1

在这一步中,输入你的项目名称,选择项目位置(可以和我一样,建一个WorkSpace 文件夹),点击下一步

步骤2

在这一步中,默认设置应该和下图一样,否则你需要添加一下服务器,然后点击下一步

步骤3

在这一步中,我们任何框架都不用(那些都是优化用的,我们先把基础的流程跑通),然后点击完成

步骤四

2.编写前的配置

新建项目完成后,右边应该会自动打开默认的index.jsp,我们不需要它,那是写网站用的默认页面,因此点右上角的“X”关闭。

关掉index.jsp

现在我们来给自己的项目添加配置文件(不清楚为什么新建项目的时候不直接生成)

选中我们的项目,然后右键,在弹出菜单里选择新建->标准部署描述符(web.xml)

新建配置文件

在弹出的窗口中我们点击完成(因为都是默认的不能更改)

设置配置文件

之后我们会看见左边自动打开了配置文件目录,里面有一个web.xml文件,右边自动打开了这个文件,可以看到里面的内容

web.xml

3.引入依赖包

所谓“站在巨人的肩膀上”,我们不可能所有的代码都原创,有前人的成果就直接引用,不需要重复造轮子。我们的工程中需要依赖以下的包,因此需要引入。这是相当重要的一步,如果不做,编程的时候会报各种找不到类、找不到文件的错误。

我们要用到的是下面的8个 .JAR 文件

外部依赖

前6个是JSONObject包, 是一个集合,6个在同一个压缩包里,去以下地址下载,
链接 密码:pa10

第7个是MySQL的驱动包, 去以下地址下载
链接 密码:je2o

第8个是Servlet API包, 去以下地址下载
链接 密码:6s1t

ok,下载完这些包,我们在项目路径下建立一个lib文件夹,把刚刚下载到的8个 .JAR文件放进去

建立lib文件夹

这还不算完,我们还需要去项目里把他们引进去。
右键点击库->添加JAR/文件夹

添加JAR/文件夹

在弹出的窗口中,找到lib文件夹,选中所有的JAR文件,然后再右边选择相对路径,最后点击打开

引入全部JAR

完成之后,我们点击库文件夹,可以看到,所有的外部依赖包都已导入库中
库

4.创建包

点开源包我们可以看见,里面有一个灰色的默认包,不推荐使用默认包,我们建立自己的包。右键源包->新建->Java 包

创建包

在弹出的窗口中,修改包名,不一定要像我这样,但是格式一般是:net/com . [公司名] . 组名 . 应用名

包名

此时,我们看到源包中的默认包消失,换成了我们刚刚创建的包,灰色是因为它是空的,一会儿创建个类进去就变成正常的颜色了。

包


开始实现!

为了方便说明,我们以写一个用户登录的功能为目标来讲。
要实现简单的用户登录,我们写两个类即可, 下面我会分别讲解。

1. 用户实体类——User

用户类,这种类一般叫Java Bean,就是定义用户的各种字段,然后封装好即可,下面贴出代码:

public class User {
    
    

    //用户姓名
    private String userName;

    //用户密码
    private String password;

    public String getUserName() {
    
    
        return userName;
    }

    public void setUserName(String userName) {
    
    
        this.userName = userName;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }
}

2. 处理登录请求——LoginServlet

这个类是我们的重中之重,它就是处理来自客户端的请求,并发回响应的类。关于Servlet的介绍请往本文所需的前置知识

①创建Servlet
它的创建过程如下, 看图↓
创建Servlet

②修改Servlet名字
在弹出的界面修改Servlet名字,然后点击下一步,不要点完成!!!

更改Servlet名字

③配置Servlet部署
上一步如果点了完成会跳过这一步,然后需要手动部署,如果忘了部署,你的请求得不到响应,你连错误都找不到!
选中 将信息添加到部署描述符(web.xml) 复选框,然后点完成。

配置Servlet部署

这时打开web.xml,你会看见它里面新增了这些东西

web.xml中的变化

回到LoginServlet中,验证请求中的账户密码是否正确,然后返回验证结果作为响应。为了入门编程的简洁,我们这里先不连接数据库,尽在代码里写定账号密码,做简单的判断,下面给出代码:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;

/**
 * 测试登录Servlet
 *
 * @author Implementist
 */
public class LoginServlet extends HttpServlet {
    
    

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

        // 设置响应内容类型、请求和相应的字符集
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

        try (PrintWriter out = response.getWriter()) {
    
    

            //获得请求中传来的用户名和密码
            //从请求链接中的username=xxx&password=yyy取得
            String username = request.getParameter("username").trim();
            String password = request.getParameter("password").trim();

            //验证账号密码是否正确且匹配
            Boolean loginSuccess = verifyLogin(username, password);
			
			//根据登录验证的结果返回相应内容
			if (loginSuccess) {
    
    
            	out.write("Success");
			} else {
    
    
				our.write("Fail");
			}
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    
    
        //为简便起见,Get请求的处理直接调用Post请求
        doPost(request, response);
    }

    /**
     * 模拟登录验证,判断用户名是否imple,同时密码是否123
     *
     * @param username 用户名
     * @param password 密码
     */
    private Boolean verifyLogin(String username, String password) {
    
    
    	return username.equals("imple") && password.equals("123");
    }
}

ok,写完这些,服务器端的登录功能请求响应就实现了,记得按Ctrl+S保存,不过这还不算完,我们需要把这个项目打包一下,然后放在Tomcat的路径下,以下是步骤

打包

右键点击我们的项目 -> 清理并构建

清理并构建
构建完成后,我们可以看到dist文件夹下有一个 .war 文件,它就是我们所需的“war包”
.WAR文件


后记

1.今天写着写着我突然想到,可能JSONObject还需要写一篇单独的博文来讲,但是直接照猫画虎应该也不会出啥问题,闲了再说;

2.每次修改完程序,记得保存->清理并构建->部署,然后在XAMPP控制面板中关闭再重启Tomcat,就能生效了。

3.今天终于写完了,这篇帖子写了好几天,好像也比较长,诸君就这么看吧。

4.就说最近为什么关于Java Web这的问题变多了,刚刚突然发现,我上面给的8个jar包的下载链接都开始收费了,一个比一个黑。你们自己凑的jar包可能不兼容或者是错的,因此会有各种错误。各位稍安勿躁,今天晚些时候我会把自己的jar包上传到云盘上,然后把链接改过来。
——2018.03.14

猜你喜欢

转载自blog.csdn.net/Mr_Megamind/article/details/109566889