JavaWeb学习总结(一)——servlet 之入门

时间:2022-10-10 13:10:26

一:什么是Servlet?    

       servlet:是java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,我的理解是:servlet接受来自客户端的请求,然后将其转发给业务逻辑处理,其本身并不做相关的业务逻辑处理,类似于前台框架MVC中的controller

     狭义的讲:servlet是指java语言实现的一个接口,即httpServlet接口;

     广义的讲:servlet是指实现了这个servlet接口的类。

   简单来说,servlet就是java编程语言中的一个类。



二:通过servlet实现增删改查

    如果单纯使用servlet实现增删改查,那简直太简单了,下面正式进入我们的入门demo。其主要内容就是简单的一个form表单,内容是一个姓名,然后对其增删改查。

     1·打开myEclipse,新建web project:

     JavaWeb学习总结(一)——servlet 之入门

     2·在webRoot文件夹下新建index.jsp页面:

        右击webRoot文件夹——new——other——web——jsp(Basic templates)

     3·新建jsp页面成功后,先改一下编码格式:

        菜单栏——window——preferences——MyEclipse——Files and Editors——jsp,把Encoding改成如图所示内容:

      JavaWeb学习总结(一)——servlet 之入门


     4·在index.jsp页面添加代码:

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="servlet/deleteUser.do" method="post">
姓名:<input type="text" name="username"/></br>
<input type="submit" value="提交"/></br>
</form>

</body>
</html>
      5·右击src文件夹:选择new——package,命名包名称为:com.bjpowernode.servlet

      6·右击该新建的包,依次选择new——class,新建一个servlet类:TestServlet

      7·在该servlet类中填写代码:

        注意:该servlet类继承httpServlet类,并覆盖其中的doGet和doPost方法,这个继承方法的选择取决于jsp的请求方式。右击TestServlet类,依次选择source——override/Implement Methods

     JavaWeb学习总结(一)——servlet 之入门

     弹出对话框,选择doPost和doGet方法即可。代码如下:

package com.bjpowernode.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取参数,只负责取出参数,传给业务逻辑
String username = request.getParameter("username");
UserManager usermanager = new UserManager();
String url = request.getRequestURL().toString();
System.out.println("url=" + url);
String path = url.substring(url.indexOf("/",3),url.indexOf("."));
System.out.println("path=" + path);
if(path.contains("add")){
usermanager.add(username);
//转发和重定向:如果将数据传回则是转发,如果不带回参数则是重定向,这是转发
request.getRequestDispatcher("/add_success.jsp").forward(request, response);
}
else if(path.contains("delete")){
usermanager.delete(username);
request.getRequestDispatcher("/delete_success.jsp").forward(request, response);
}
}

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

}

   8·改serlvet类只是接受jsp传来的参数,然后将其传给业务逻辑处理,所以,添加类:UserManager,右击我们新添加的包,依次new——class即可。类名称为:UserManager

   9·在UserManager类中添加代码:主要是处理业务逻辑处理。

package com.bjpowernode.servlet;

public class UserManager {
//增加
public void add(String username){

System.out.println("UserManager.add() ---->> username" + username);

}
//删除
public void delete(String username){

System.out.println("UserManager.delete() ---->> username" + username);

}
//查询
public void query(String username){

System.out.println("UserManager.query() ---->> username" + username);

}

}
     10·配置web.xml配置文件,在WebRoot——WEB-INF文件夹下的web.xml,配置如下:

    

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.bjpowernode.servlet.TestServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>*.do</url-pattern>
<!-- 类似于fifter,过滤器,凡是后缀为.do的文件都会被servlet截获 -->
<!-- <url-pattern>*.do</url-pattern> -->
</servlet-mapping>

</web-app>
     基本的代码这就算敲完了,接下来就是部署web项目了,部署很简单,

     1.选择菜单栏——window——preferences,

出现弹出框以后,依次找到MyEclipse——Servers——Tomcat,选择tomcat版本即可。我选择的是tomcat7.0,然后点击browse,选择tomcat的本地路径即可。然后将"Tomcat 7.x server"下改为enable,便是允许tomcat7.0在该项目中使用。如图所示:

     JavaWeb学习总结(一)——servlet 之入门

     2·在左侧栏tomcat7.x下,选择jdk,右侧选择本地的jdk即可。

     JavaWeb学习总结(一)——servlet 之入门

     3·将该项目加到tomcat服务器上。选择菜单栏如图所示的图标:

     JavaWeb学习总结(一)——servlet 之入门

     出现弹出框后,点击add,将该项目添加到tomcat即可。

     4·然后就ok了。在servers窗口出现tomcat 7.x,该下拉列表中有你的项目就说明ok了。如图所示:

  JavaWeb学习总结(一)——servlet 之入门

      好的,大功告成,现在我们打开浏览器,输入:http://localhost:8080/test_servlet,访问即可。出现如图界面:

       JavaWeb学习总结(一)——servlet 之入门

      现在我们在文本框中输入:servlet测试,点击提交,然后出现:

      JavaWeb学习总结(一)——servlet 之入门

       这就说明我们成功了!这就是通过servlet实现的增删改查,下面我们说明servlet的基本实现流程。



三:servlet工作流程

     1·web客户端发出一个request请求,该请求为有规则的请求:类似于*.action;.do;

             2·web.xml配置文件会结果该请求,通过web.xml配置文件的映射url,找到映射的servlet

             3·servlet类根据页面jsp的不同请求方法调用doGet()或者doPost(),此外还有doHead(),doPut(),doTrace(),doDelete(),doOptions()等方法,这些是servlet接口封装好的方法,实现类实现即可。

             4·servlet类的相应方法接收客户端发来的参数,并传给业务逻辑层action去处理,并将从业务逻辑层接收的参数通过转发或重定向返回给客户端。

             5·客户端接收到返回值显示即可。

其工作流程用时序图表示如图所示:

JavaWeb学习总结(一)——servlet 之入门




四:总结


    前端框架MVC我们都知道,通过对servlet的学习,对比这两个,我们可以发现:其实servlet就充当着mvc中的“C”的作用,在mvc中,controller接受来自视图view的参数,然后将其传给后台处理,后台处理完了再返回给controller,controller再将返回值返回给view,呈现给用户。servlet也是一样。接受页面jsp传来的参数,然后servlet类接受并传给后台业务逻辑处理类UserManager,UserManager处理完后返回给servlet类,servlet再返回给页面jsp,并呈现给用户。大概用图来描述它们之间的关系,如图所示:

JavaWeb学习总结(一)——servlet 之入门

     整体就是这样。初步学习servlet,理解还留在表层,随着学习的不断深入,再学习,再理解。