章节索引
前提
在 索引文章 中我提到过,我们用Java Web来写服务器程序,这篇文章我们真正的进入到编码的环节。
本文所需的前置知识
- Java Bean:《Java bean 是个什么概念?》
- Servlet:《Servlet 简介》
- HTTP request method:《HTTP 请求方法》
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应用程序,点击下一步
在这一步中,输入你的项目名称,选择项目位置(可以和我一样,建一个WorkSpace 文件夹),点击下一步
在这一步中,默认设置应该和下图一样,否则你需要添加一下服务器,然后点击下一步
在这一步中,我们任何框架都不用(那些都是优化用的,我们先把基础的流程跑通),然后点击完成
2.编写前的配置
新建项目完成后,右边应该会自动打开默认的index.jsp,我们不需要它,那是写网站用的默认页面,因此点右上角的“X”关闭。
现在我们来给自己的项目添加配置文件(不清楚为什么新建项目的时候不直接生成)
选中我们的项目,然后右键,在弹出菜单里选择新建->标准部署描述符(web.xml)
在弹出的窗口中我们点击完成(因为都是默认的不能更改)
之后我们会看见左边自动打开了配置文件目录,里面有一个web.xml文件,右边自动打开了这个文件,可以看到里面的内容
3.引入依赖包
所谓“站在巨人的肩膀上”,我们不可能所有的代码都原创,有前人的成果就直接引用,不需要重复造轮子。我们的工程中需要依赖以下的包,因此需要引入。这是相当重要的一步,如果不做,编程的时候会报各种找不到类、找不到文件的错误。
我们要用到的是下面的8个 .JAR 文件
前6个是JSONObject包, 是一个集合,6个在同一个压缩包里,去以下地址下载,
链接 密码:pa10
第7个是MySQL的驱动包, 去以下地址下载
链接 密码:je2o
第8个是Servlet API包, 去以下地址下载
链接 密码:6s1t
ok,下载完这些包,我们在项目路径下建立一个lib文件夹,把刚刚下载到的8个 .JAR文件放进去
这还不算完,我们还需要去项目里把他们引进去。
右键点击库->添加JAR/文件夹
在弹出的窗口中,找到lib文件夹,选中所有的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部署
上一步如果点了完成会跳过这一步,然后需要手动部署,如果忘了部署,你的请求得不到响应,你连错误都找不到!
选中 将信息添加到部署描述符(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包”
后记
1.今天写着写着我突然想到,可能JSONObject还需要写一篇单独的博文来讲,但是直接照猫画虎应该也不会出啥问题,闲了再说;
2.每次修改完程序,记得保存->清理并构建->部署,然后在XAMPP控制面板中关闭再重启Tomcat,就能生效了。
3.今天终于写完了,这篇帖子写了好几天,好像也比较长,诸君就这么看吧。
4.就说最近为什么关于Java Web这的问题变多了,刚刚突然发现,我上面给的8个jar包的下载链接都开始收费了,一个比一个黑。你们自己凑的jar包可能不兼容或者是错的,因此会有各种错误。各位稍安勿躁,今天晚些时候我会把自己的jar包上传到云盘上,然后把链接改过来。
——2018.03.14