编码实战Web端联系人的增删改查

首先画出分析图

实现效果如图

项目下的包如图:



实体包

package com.contactSystem.entiey;

public class Contact {
	private String Id;
	private String name;
	private String sex;
	private String age;
	private String phone;
	private String qq;
	private String email;
	public String getId() {
		return Id;
	}
	public void setId(String id) {
		Id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getQq() {
		return qq;
	}
	public void setQq(String qq) {
		this.qq = qq;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override
	public String toString() {
		return "Contact [Id=" + Id + ", name=" + name + ", sex=" + sex
				+ ", age=" + age + ", phone=" + phone + ", qq=" + qq
				+ ", email=" + email + "]";
	}

}

  XML的工具包(只是避免了代码的重复使用,将其放进工具包中)

package com.contactSystem.util;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.management.RuntimeErrorException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/*
 * xml操作的工具类
 */
public class XMLUtil {
	//写出一个xml文件
	public static void write2xml(Document doc) throws Exception{
		OutputStream out=new FileOutputStream("e:/contact.xml");
		OutputFormat format=OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		XMLWriter writer=new XMLWriter(out,format);
		writer.write(doc);
		writer.close();
	}

	//读取本地xml文件的方法
	public static Document getDocument(){
		Document doc;
		try {
			doc = new SAXReader().read("e:/contact.xml");
			return doc;
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new RuntimeException(e);
		}

	}

}

  



抽象的接口

package com.contactSystem.dao;

import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.dom4j.DocumentException;
import com.contactSystem.entiey.Contact;

public interface ContactOperate {
	public void addContact(Contact contact) throws Exception;
	public void updateContact(Contact contact) throws Exception;
	public void removeContact(String id) throws Exception;
	public Contact findContact(String id) throws Exception;
	public List<Contact>  allContacts();
}

  具体的实现方法和操作

package com.contactSystem.dao.daoImpl;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import javax.persistence.Id;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.contactSystem.dao.ContactOperate;
import com.contactSystem.entiey.Contact;
import com.contactSystem.util.XMLUtil;

public class Operater implements ContactOperate {

	@Override
	//添加联系人
	public void addContact(Contact contact) throws Exception {
		// TODO Auto-generated method stub
		File file=new File("e:/contact.xml");
		Document doc=null;
		Element rootElem=null;
		if (file.exists()) {
			doc=new SAXReader().read(file);
			rootElem=doc.getRootElement();
		}else {
			doc=DocumentHelper.createDocument();
			rootElem=doc.addElement("ContactList");
		}

		//开始添加个体
		Element element=rootElem.addElement("contact");
		//有系统自动生成一随机且唯一的ID,赋给联系人Id,系统提供了一个包UUID包
		String uuid=UUID.randomUUID().toString().replace("-", "");

		element.addAttribute("Id", uuid);
		element.addElement("姓名").setText(contact.getName());
		element.addElement("name").setText(contact.getName());
		element.addElement("sex").setText(contact.getSex());
		element.addElement("age").setText(contact.getAge());
		element.addElement("phone").setText(contact.getPhone());
		element.addElement("email").setText(contact.getEmail());
		element.addElement("qq").setText(contact.getQq());

		//写入到本地的xml文档中
		XMLUtil.write2xml(doc);

	}

	@Override
	public void updateContact(Contact contact) throws Exception {
		// TODO Auto-generated method stub
		//通过xpath查找对应id的联系人
		Document document=XMLUtil.getDocument();
		Element element=(Element) document.selectSingleNode("//contact[@Id=‘"+contact.getId()+"‘]");
		//根据标签改文本
		System.out.println(element);
		element.element("name").setText(contact.getName());
		element.element("age").setText(contact.getAge());
		element.element("email").setText(contact.getEmail());
		element.element("phone").setText(contact.getPhone());
		element.element("sex").setText(contact.getSex());
		element.element("qq").setText(contact.getQq());
		XMLUtil.write2xml(document);

	}

	@Override
	public void removeContact(String id) throws Exception {
		// TODO Auto-generated method stub
		//通过xpath去查找对应的contact
		Document document=XMLUtil.getDocument();
		Element element=(Element) document.selectSingleNode("//contact[@Id=‘"+id+"‘]");
		/**
		 * 如果是火狐浏览器,其本身有一个bug,对于一个get请求,它会重复做两次,
		 * 第一次会把一个唯一的id给删除掉,但是在第二次的时候,它会继续去删,而这个时候查找不到,会报错,会发生错误,
		 * 为了解决这个bug,我们在这里验证其是否为空
		 */
		if (element!=null) {
			element.detach();
			XMLUtil.write2xml(document);
		}
	}

	@Override
	public Contact findContact(String id) throws Exception {
		// TODO Auto-generated method stub
		Document document=XMLUtil.getDocument();
		Element e=(Element) document.selectSingleNode("//contact[@Id=‘"+id+"‘]");

		Contact contact=null;
		if (e!=null) {
			contact=new Contact();
			contact.setAge(e.elementText("age"));
			contact.setEmail(e.elementText("email"));
			contact.setId(e.attributeValue("id"));
			contact.setName(e.elementText("name"));
			contact.setPhone(e.elementText("phone"));
			contact.setSex(e.elementText("sex"));
			contact.setQq(e.elementText("qq"));
		}
		return contact;
	}

	@Override
	public List<Contact> allContacts() {
		// TODO Auto-generated method stub
		Document document=XMLUtil.getDocument();
		List<Contact> list=new ArrayList<Contact>();
		List<Element> conElements=(List<Element>)document.selectNodes("//contact");
		for (Element element : conElements) {
			Contact contact=new Contact();
			contact.setId(element.attributeValue("Id"));
			contact.setAge(element.elementText("age"));
			contact.setEmail(element.elementText("email"));
			contact.setName(element.elementText("name"));
			contact.setPhone(element.elementText("phone"));
			contact.setQq(element.elementText("qq"));
			contact.setSex(element.elementText("sex"));
			list.add(contact);
		}
		return list;
	}

}

  



添加联系人的html页面

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>添加联系人</title>
    <style media="screen">
      #btn{
        width:40px;
        width: 50px;
        background: green;
        color: white;
        font-size:14px;
      }
    </style>
</head>

<body>
    <center>
        <h2>添加联系人</h2>
    </center>
    <form action="/ContactWeb/addServlet" method="post">
        <table border="1" align="center">
            <tbody>

                <tr>
                    <th>姓名</th>
                    <td><input type="text" name="userName" /></td>
                </tr>
                <tr>
                    <th>年龄</th>
                    <td><input type="text" name="age" /></td>
                </tr>
                <tr>
                  <th>性别</th>
                  <td>
                    <input type="radio" name="sex"  value="男"/>男  
                    <input type="radio" name="sex" value="女" />女
                  </td>
                </tr>
                <tr>
                    <th>电话</th>
                    <td><input type="text" name="phone" /></td>
                </tr>
                <tr>
                    <th>QQ</th>
                    <td><input type="text" name="qq" /></td>
                </tr>
                <tr>
                    <th>邮箱</th>
                    <td><input type="text" name="email" /></td>
                </tr>
                <tr>
                  <td colspan="3" align="center">
                    <input type="submit"  value="提交" id="btn"/>
                  </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>

</html>

  



接下来则是最重要的servlet(显示首页,所有联系人)

package com.contactSystem.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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

import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;

public class Index extends HttpServlet {

	/**
	 * 显示所有联系人的逻辑方式
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		Operater operater=new Operater();
		List<Contact> contacts=operater.allContacts();

		PrintWriter writer=response.getWriter();
		/**
		 * shift+alt+A ——>区域选择
		 * 正则表达式:“."表示任意字符,"*"表示多个字符
		 *             “/1”表示一行代表匹配一行内容
		 */
		String html="";
		html+= "<!DOCTYPE html>";
		html+= "<html>";
		html+= "";
		html+= "<head>";
		html+= "    <meta charset=‘utf-8‘>";
		html+= "    <title>查询所有联系人</title>";
		html+= "    <style media=‘screen‘>";
		html+= "        table td {";
		html+= "            text-align: center;";
		html+= "        }";
		html+= "";
		html+= "        table {";
		html+= "            border-collapse: collapse;";
		html+= "        }";
		html+= "    </style>";
		html+= "</head>";
		html+= "";
		html+= "<body>";
		html+= "    <center>";
		html+= "        <h2>查询所有联系人</h2>";
		html+= "    </center>";
		html+= "    <table border=‘1‘ align=‘center‘>";
		html+= "        <tbody>";
		html+= "            <thead>";
		html+= "                <th>编号</th>";
		html+= "                <th>姓名</th>";
		html+= "                <th>性别</th>";
		html+= "                <th>年龄</th>";
		html+= "                <th>电话</th>";
		html+= "                <th>QQ</th>";
		html+= "                <th>邮箱</th>";
		html+= "                <th>操作</th>";
		html+= "            </thead>";
		html+= "            ";
		html+= "            <tr>";
		if (contacts!=null) {
			for (Contact contact : contacts) {
				html+= "                <td>"+contact.getId()+"</td>";
				html+= "                <td>"+contact.getName()+"</td>";
				html+= "                <td>"+contact.getSex()+"</td>";
				html+= "                <td>"+contact.getAge()+"</td>";
				html+= "                <td>"+contact.getPhone()+"</td>";
				html+= "                <td>"+contact.getQq()+"</td>";
				html+= "                <td>"+contact.getEmail()+"</td>";
				html+= "                <td><a href=‘"+request.getContextPath()+"/FindIdServlet?id="+contact.getId()+"‘>修改</a>  <a href=‘"+request.getContextPath()+"/DeleteServlet?id="+contact.getId()+"‘>删除</a></td>";
				html+= "            </tr>";
			}
		}
		html+= "            <tr>";
		html+= "                <td colspan=‘8‘>";
		html+= "                    <a href=‘"+request.getContextPath()+"/add.html‘‘‘>添加联系人</a>";
		html+= "                </td>";
		html+= "            </tr>";
		html+= "        </tbody>";
		html+= "    </table>";
		html+= "</body>";
		html+= "";
		html+= "</html>";
		writer.write(html);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

}

  添加联系人的servlet

package com.contactSystem.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;

public class addServlet extends HttpServlet {

	/**
	 * 处理添加联系人的逻辑
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String userName=request.getParameter("userName");
		String age=request.getParameter("age");
		String sex=request.getParameter("sex");
		String phone=request.getParameter("phone");
		String qq=request.getParameter("qq");
		String email=request.getParameter("email");

		Operater operater=new Operater();
		Contact contact=new Contact();
		contact.setName(userName);
		contact.setAge(age);
		contact.setSex(sex);
		contact.setPhone(phone);
		contact.setQq(qq);
		contact.setEmail(email);
		try {
			operater.addContact(contact);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		response.sendRedirect(request.getContextPath()+"/Index");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

}

 修改联系人,根据查找到的联系人,显示在其上面如图(根据显示的首页显示得内容为本页面的默认值)

首先是要去查找这个联系人的信息,即FindIdServlet

package com.contactSystem.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;

public class FindIdServlet extends HttpServlet {

	/**
	 * 修改联系人逻辑
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter writer=response.getWriter();
		Operater operater=new Operater();

		String id=request.getParameter("id");
		Contact contact=null;
		try {
			contact=operater.findContact(id);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String html="";
		html += "<!DOCTYPE html>";
		html += "<html>";
		html += "<head>";
		html += "    <meta charset=‘utf-8‘>";
		html += "    <title>添加联系人</title>";
		html += "    <style media=‘screen‘>";
		html += "      #btn{";
		html += "        width:40px;";
		html += "        width: 50px;";
		html += "        background: green;";
		html += "        color: white;";
		html += "        font-size:14px;";
		html += "      }";
		html += "    </style>";
		html += "</head>";
		html += "";
		html += "<body>";
		html += "    <center>";
		html += "        <h2>修改联系人</h2>";
		html += "    </center>";
		html += "    <form action=‘"+request.getContextPath()+"/UpdateServlet‘ method=‘post‘>";
		html +="<input type=‘hidden‘ name=‘id‘ value=‘"+id+"‘ />";
		html += "        <table border=‘1‘ align=‘center‘>";
		html += "            <tbody>";
		html += "                <tr>";
		html += "                    <th>姓名</th>";
		html += "                    <td><input type=‘text‘ name=‘userName‘ value=‘"+contact.getName()+"‘/></td>";
		html += "                </tr>";
		html += "                <tr>";
		html += "                    <th>年龄</th>";
		html += "                    <td><input type=‘text‘ name=‘age‘ value=‘"+contact.getAge()+"‘ /></td>";
		html += "                </tr>";
		html += "                <tr>";
		html += "                  <th>性别</th>";
		html += "                  <td>";

		if (contact.getSex().equals("男")) {
			html += "                    <input type=‘radio‘ name=‘sex‘  value=‘男‘    checked=‘checked‘/>男  ";
			html += "                    <input type=‘radio‘ name=‘sex‘ value=‘女‘ />女";
		}else {
			html += "                    <input type=‘radio‘ name=‘sex‘  value=‘男‘    />男  ";
			html += "                    <input type=‘radio‘ name=‘sex‘ value=‘女‘ checked=‘checked‘ />女";
		}
		html += "                  </td>";
		html += "                </tr>";
		html += "                <tr>";
		html += "                    <th>电话</th>";
		html += "                    <td><input type=‘text‘ name=‘phone‘ value=‘"+contact.getPhone()+"‘ /></td>";
		html += "                </tr>";
		html += "                <tr>";
		html += "                    <th>QQ</th>";
		html += "                    <td><input type=‘text‘ name=‘qq‘ value=‘"+contact.getQq()+"‘  /></td>";
		html += "                </tr>";
		html += "                <tr>";
		html += "                    <th>邮箱</th>";
		html += "                    <td><input type=‘text‘ name=‘email‘ value=‘"+contact.getEmail()+"‘ /></td>";
		html += "                </tr>";
		html += "                <tr>";
		html += "                  <td colspan=‘3‘ align=‘center‘>";
		html += "                    <input type=‘submit‘  value=‘提交‘ id=‘btn‘/>";
		html += "                  </td>";
		html += "                </tr>";
		html += "            </tbody>";
		html += "        </table>";
		html += "    </form>";
		html += "</body>";
		html += "";
		html += "</html>";

		writer.write(html);

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

}

  然后则是根据提交的内容去修改本地的联系人

package com.contactSystem.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;

public class UpdateServlet extends HttpServlet {

	/**
	 * 将修改后的数据提交
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");

		request.setCharacterEncoding("utf-8");
		String userName=request.getParameter("userName");
		System.out.println(userName);
		String age=request.getParameter("age");
		String sex=request.getParameter("sex");
		String phone=request.getParameter("phone");
		String qq=request.getParameter("qq");
		String email=request.getParameter("email");
		String id=request.getParameter("id");
		Operater operater=new Operater();
		Contact contact=new Contact();
		contact.setId(id);
		contact.setName(userName);
		contact.setAge(age);
		contact.setSex(sex);
		contact.setPhone(phone);
		contact.setQq(qq);
		contact.setEmail(email);
		try {
			operater.updateContact(contact);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		response.sendRedirect(request.getContextPath()+"/Index");

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

}

  最后则是删除联系人,不过要注意的是:火狐浏览器如果判断是get请求的话,会向服务器发送两次请求,可能会导致一些问题,其他的浏览器不会出出现该问题

package com.contactSystem.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

import com.contactSystem.dao.daoImpl.Operater;

public class DeleteServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");

		String id=request.getParameter("id");
		Operater operater=new Operater();
		try {
			operater.removeContact(id);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		response.sendRedirect(request.getContextPath()+"/Index");

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}
}

  

最后:不用jsp去写,就用servlet去写html真的好累,还是好好学jsp吧。

时间: 2024-10-13 01:54:54

编码实战Web端联系人的增删改查的相关文章

使用HttpClient对ASP.NET Web API服务实现增删改查

本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查. 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序". 选择"Web API". 在Models文件夹下创建Product类. public class Product { public int Id { get; set; } public string Name { get; set; } public string Categor

通过flask实现web页面简单的增删改查

通过flask实现web页面简单的增删改查 # 1.后台程序falsk_web01.py #coding:utf-8 from flask import Flask,render_template,request,redirect import fileutils # 引入file_dict用户列表 fileutils.file_read() app = Flask(__name__) @app.route('/') def index(): return render_template('lo

前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查

AngularJS中的$resource服务相比$http服务更适合与RESTful服务进行交互.本篇后端使用ASP.NET Web API, 前端使用$resource,实现增删改查. 领域和上下文 首先领域先行. public class StudentVm { [Key] public int Id { get; set; } public string Name { get; set; } public string Age { get; set; } } 上下文. public cla

Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在需要存储一些数据,或者拿到一些数据的时候,就需要往数据库里存取数据,那么java如何连接数据库呢?需要哪些步骤? 1.注册驱动 什么是驱动? 驱动就是JDBC实现类,通俗点讲,就是能够连接到数据库功能的东西就是驱动,由于市面上有很多数据库,Oracle.MySql等等,所以java就有一个连接数据库

对联系人进行增删改查

我已经将联系人操作的方法进行了封装,暴露了几个重要的方法,方便以后调用. 1. public void printContactsList() // 获取到的联系人列表(用于测试用) 2. public ArrayList<ContactBean> getContactsList() // 得到手机和SIM卡中的联系人列表(姓名 + 电话号码) 3. public void add(String name, String phoneNumber) // 添加一个新的联系人数据 4. publi

Node+Express+node-mysql 实战于演习 全套mysql(增删改查)

最近这段时间研究Node感觉不错,自己做了一个增删改查,虽然有些简陋,但是思想是想通的,其实所有项目都是增删改查,有助于初学者快速掌握Node 首先 本实例展示的是基于Node+Express+node-mysql快速搭建的一套增删改查,视图模板是jade,基本上都是现在能用的到的技术,市面上的实例也特别少,有用的又不新,所以自己写一个 基本工作 首先我们准备一些基本的,因为我是用mysql麻烦可以自己装一下mysql,去官网可以下各种操作系统的安装包. 实例就一张表,下面是这张表的建表语句 S

web MVC程序开发增删改查参考代码。思路是面向对象思想,以及在HTML代码中嵌入C#代码

第一步:在Model中写好查询,删除,修改,添加方法,用sql_link类 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication2.Models { public class InfoBf { private MydbDataContext _Context = new MydbDataContext(); //查询 public

spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例

创建 web项目 配置pom.xml文件   ------相当于jar包 配置application.yml -----配置文件(spring数据库连接.server服务.logging日志等) 创建 package  (entity.controller.service.configuration.repository.interceptor等) 小例子: entity:Person 数据持久化(dao): controller: spring 自带Junit测试@SpringBootTest

【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系人 说明:为了方便数据不使用真正的数据库,而是通过内存数据模拟 1.       Web API中包含的方法 Action HTTP method Relative URI GetAllContact GET /api/contact GetContact GET /api/contact /id