学习服务器与数据库(2)

 本系列的学习的资料主要来自衷水木先生的博客。

        在上篇文章中我们已经配好了JDK但是还没有装开发环境,在这里补上。这次直接找一个JavaEE版本的Eclipse解压到我们想安装的目录下即可,用过 Eclipse+ADT 开发 Android 的同学都知道 Eclipse 是免安装的,在 /eclipse 下直接打开 eclipse.exe 即可。到此我们只是简单安装了一个服务器的运行环境,现在我们开始写自己的服务器程序。

          一、Servlet简介

        摘自书上的一小段解释——“Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

        使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页”。服务器接收来自不同用户的不同的请求(当然是以该服务器作为请求目标的那些请求),分析不同的请求,控制模块将各自的请求分送至对应的 Servlet (如登陆请求,则将登陆数据送至LoginServlet),然后 Servlet 根据请求内容处理业务逻辑(如登陆请求则解析用户名密码,并和数据库中保存的用户名密码进行对比,得出是否是合法用户的结论),完成响应数据的封装返回给控制模块,控制模块再将该响应返回给对应的请求用户,这样即完成一次网络交互。如下图所示:


        二、开始使用Servlet

        在 JavaEE 版的 Eclipse 中创建 Dynamic Web Project 



勾选创建web.xml文件,接下来的步骤都默认,Next 直到下图:


到此,工程创建成功,我们来简单了解一下目录结构:


  这里需要说明一下:在创建工程时我们的 Dynamic web module version 选项默认选择的3.0,就会出现后面要勾选 Generate web.xml deployment descriptor 才能创建 web.xml 文件的情况,若是3.0之前的版本是没有这个勾选选项的,而web.xml文件是默认创建的。






看一看都重写了哪些方法,最后 finish,我们第一个Servlet就创建好了。

        打开刚创建的 FirstServlet.java 看看——Oh!Shit!你会惊讶的发现“祖国江山一片红”,各种类未定义、各种包找不见!不要惊讶,这就是刚开始我们以一个全新的 WorkSpace 为例的原因。

        还记得我们一开始创建 Dynamic Web Project 的时候并没有指定 Target runtime 吗?这就是指定运行时环境,就是我们比较外行的说法-环境问题。没关系,现在我们再来做这件事:

        在 Project Explorer 空白区域 > 右键 > New > Other > 选择Server:


NEXT > 选择Tomcat Server(由于在上篇文章中 Tomcat 装的是8.0.32,所以这里选 v8.0,各位要根据自己的 Tomcat 选择相应的版本):


NEXT > 设置 Tomcat 安装路径(JRE可以workspace默认的JRE,也可以选择一个特定的JRE,如JRE1.7),之后 finish完成:


(也可以Next > 将之前创建的 工程Add到服务器中,再finish,这一步是可选的):

  发现之前各种错误一片红还是没有解决?不要着急,再一步就搞定了——
        刚刚创建的工程"右键" > properties > Targeted Runtimes,勾选刚创建好的Server,OK,看看工程,正常了吧?当然,这些创建或选择 Target Runtime 也可以在创建工程的时候就做,只是我这里单独拿出来走一遍而已,让我们都印象深刻一点。好了,这个问题解决了。继续回到我们的主线。

         用事实说话,修改在上边我们创建的 FirstServlet中的 doget 方法中如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	    /* 先设置请求、响应报文的编码格式  */  
	request.setCharacterEncoding("utf-8");  
	response.setContentType("text/html;charset=utf-8");  
        String account = request.getParameter("account"); // 从 request 中获取名为 account 的参数的值  
        String password = request.getParameter("password"); // 从 request 中获取名为 password 的参数的值  
        System.out.println("account:" + account + "\npassword:" + password); // 打印出来看一看  
  
        String result = "";  
        if("abc".equals(account)   
                && "123".equals(password)){ // 模拟登陆账号、密码验证  
            result = "Login Success!";  
        }else {  
            result = "Sorry! Account or password error.";  
        }  
        /* 这里我们只是模拟了一个最简单的业务逻辑,当然,你的实际业务可以相当复杂 */  
          
        PrintWriter pw = response.getWriter(); // 获取 response 的输出流  
        pw.println(result); // 通过输出流把业务逻辑的结果输出  
        pw.flush();  
	}

 Server选择之前创建的,Add该工程到服务器配置,finish。出现



  即说明运行成功了!

 在浏览器地址栏输入http://localhost:8080/ServletTest/Home/FirstServlet?account=abc&password=123回车,会看到:


  终端记录:


其中

protected void doGet(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {  
    /* 先设置请求、响应报文的编码格式  */  
    request.setCharacterEncoding("utf-8");  
    response.setContentType("text/html;charset=utf-8");  
      
    // .....再进行我们的逻辑处理  
}  

可解决中文乱码。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值