`
andyzhchy
  • 浏览: 94696 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用servlet写软件服务端API

阅读更多
最近在帮公司的一个软件写服务端的API,因为以前是php的,现在用java来完成,首先要说的是我还是个菜鸟,所以领到这个任务的时候我有点云里雾里,不是很明白。需要访问的地址不多就几个,登录,注册,获取菜单,获取产品列表……
Boss给的任务是一个星期做完(毕竟我是菜鸟嘛):D,刚开始的三天都没什么头绪,但是我一直坚信我可以完成,因为无非就是接收和发送数据嘛。但是都星期三了,时间不多,要交货的,没东西多不好意思啊。好啦,废话少说,把我的做法贴出来吧,嘻嘻。
接贴一个login的吧
访问地址是http://xxx.xxx.xxx/login http/1.1
public class LoginServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;
	

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
Crypter crypter = new Crypter();
		
if (request.getHeader("Authorization") == null) {
response.setStatus(401);
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
Date date = new Date();
String noncecode = new MD5Code().getMD5ofStr(String.valueOf(date.getTime())).toLowerCase();
response.setHeader("WWW-authenticate","Digest qop=\"auth\",realm=\"localhost\",nonce=\"" + noncecode + "\",algorithm=\"MD5\",uri=\"api/login\"");
		} else {
String encoded = (request.getHeader("Authorization"));
Map<String, String> map = new HashMap<String, String>();
map = new CodeParse().parseDigest(encoded);
String password = "";
try {
password = DAOFactory.getUserDAOInstance() .queryPasswordByUsername(map.get("username"));
} catch (Exception e1) {
e1.printStackTrace();
}
String a1 = map.get("username")+":"+map.get("realm").toLowerCase()+":"+password;
String A1 = new MD5Code().getMD5ofStr(a1).toLowerCase();
String a2 = request.getMethod()+":"+map.get("uri").toLowerCase();
String A2 = new MD5Code().getMD5ofStr(a2).toLowerCase();
String a3 = A1.toLowerCase()+":"+map.get("nonce").toLowerCase()+":"+map.get("nc").toLowerCase()+":"+map.get("cnonce").toLowerCase()+":"+map.get("qop").toLowerCase()+":"+A2.toLowerCase();
String responseStr = new MD5Code().getMD5ofStr(a3).toLowerCase();
			
if(map.get("response").equals(responseStr)) {
String keyc =(String)request.getSession().getAttribute("keycrypt");
if("".equals(keyc) || keyc==null) {
response.setStatus(200);
....//创建一个经过加密处理的X-SessionKey,也就是keycrypt
response.setHeader("X-SessionId", request.getSession().getId());
response.setHeader("X-SessionKey", (String)request.getSession().getAttribute("keycrypt"));
				}
			
			}
		}
	}
}


代码好像有点乱哦,不过就这样吧 这个里面还是没有写出如何接受数据,呵呵。
分享到:
评论

相关推荐

    Java Web应用开发:servlet.ppt

    如何向客户端发送响应 知道如何解决web开发中的中文乱码问题,知道乱码问题产生的原因和解决方法 会debug服务端代码 什么是Servlet Servlet是Java web应用中最核心的组件,完全用Java语言编写,它运行于服务端,它...

    tomcat中Servlet的工作机制详细介绍

    在研究Servlet在tomcat中的工作机制前必须先看看Servlet规范的一些重要的相关规定,规范提供了一个Servlet接口,接口中包含的重要方法是init、service、destroy等方法,Servlet在初始化时要调用init方法,在销毁时要...

    fastweixin 源代码 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听

    文本消息、图片消息、图文消息等等 提供了基于springmvc以及基于servlet框架的控制器,集成了微信服务器绑定、监听所有类型消息的方法 使用时继承,重写即可,十分方便 支持高级接口的API,框架中提供MenuAPI、...

    Servlet实现文件上传和下载.docx

    servlet3.0版本以前需要使用第三方的jar包commons- fileupload来实现上传文件,servlet3.0版本自带了上传文件的api,无需第三方jar包 servlet3.0将上传的文件保存在Part实例中,可以通过request对象根据上传的表单...

    微信服务器端的sdkwxpay-sdk.zip

    基于 Servlet 的微信 API 封装, 提供对 微信消息响应(wxmsg), 微信公众平台API(wxmp), 微信支付(wxpay) 的顶层支持和封装; 兼提供底层token管理, https支持等杂务服务. 特性:透明封装, Req/Resp交互, 与...

    Spring API

    14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7...

    restlet-jse-2.1.1.zip

    Restlet项目受到Servlet API、JSP(Java Server Pages)、HttpURLConnection及Struts等Web开发技术的影响。该项目的主要目标是:在提供同等功能的同时,尽量遵守Roy Fielding博士论文中所阐述的REST的目标。它的另一...

    微服务高可用网关与容错架构实践.docx

    服务端开放出来他们的 API 文档,我们拿到接口、参数、参数类型通过泛化调用到服务端程序。 四、微服务 微服务是指将原来集中于一体的功能拆分出去,各自有各自的自成体系的发布、运维等。这解决了单体应用下的...

    Hessian的学习笔记

    4. 服务端根据Hessian提供的API接收请求,处理请求并返回结果。 5. Hessian将结果对象进行序列化,传输至客户端。 6. 客户端根据Hessian提供的API接收结果,反序列化为原始对象。 三、Hessian调用实例 下面是一个...

    JAVAEEWEB高级编程期末考试复习资料.pdf

    redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以 session、request 参数都可以获取。 10. EJB3.0 及其替代方案 EJB3.0 是 Java EE...

    Jesse:基于Java EE API构建的服务器端事件框架

    它是使用JEE API构建的框架,用于在JEE Web应用程序中提供服务器端事件功能。入门将其添加到您的项目将此添加到您的依赖项: &lt; dependency&gt; &lt; groupId&gt;me.kisoft&lt;/ groupId&gt; &lt; artifactId&gt;jesse&lt;/ artifactId&gt; 设置...

    开源的JMS服务器和源码

    OpenJMS是一个开源的Java Message Service API 1.0.2 规范的实现,它包含有以下特性: *. 它既支持点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。 *. 支持同步与异步消息发送 *. JDBC持久性...

    基于百度AI人脸识别的考勤系统设计与实现.pdf

    系统将教师查询考勤信息的请求发送给服务端控制层,服务端通过调用DAO中的listAllMessage()方法返回一个考勤信息的集合对象,将其显示在系统界面上。 本系统设计并实现了一种基于人脸识别的高校学生考勤系统,借助...

    restlet-jee-2.1.1.zip

    Restlet项目受到Servlet API、JSP(Java Server Pages)、HttpURLConnection及Struts等Web开发技术的影响。该项目的主要目标是:在提供同等功能的同时,尽量遵守Roy Fielding博士论文中所阐述的REST的目标。它的另一...

    java面试题web部分

    pageContext对象表示一个javax.servlet.jsp.PageContext对象,用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 六、JSP指令 JSP指令是一种特殊的标签,用于...

    2023年javaWeb面试题含答案.doc

    Java Web 面试题知识点总结 Java Web 面试题含答案主要涵盖了 Java Web 开发的核心技术和概念,包括 JSP、...Struts1 过去依赖 Servlet API,不容易测试。Struts2 不依赖于容器,允许 Action 脱离容器单独被测试。

    rest风格webservice框架

    Restlet项目受到Servlet API、JSP(Java Server Pages)、HttpURLConnection及Struts等Web开发技术的影响。该项目的主要目标是:在提供同等功能的同时,尽量遵守Roy Fielding博士论文中所阐述的REST的目标。它的另一...

    apache-cxf-3.3.4

    JavaScript编程模型,用于客户端和服务端开发 Maven工具 支持CORBA HTTP和JMS传输层 可嵌入的开发: ServiceMix或其他JBI容器 Geronimo或其他Java EE容器 Tomcat或其他Servlet容器 OSGi 引用OSGi远程服务...

    JavaWeb面试题汇编.pdf

    它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息。 ...

    fastweixin微信公众平台服务器 v1.3.14

    软件特点:fastweixin可以极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听。简单封装了所有与微信服务器交互的消息:文本消息、图片消息、图文消息等等;提供了基于...

Global site tag (gtag.js) - Google Analytics