最近在帮公司的一个软件写服务端的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"));
}
}
}
}
}
代码好像有点乱哦,不过就这样吧 这个里面还是没有写出如何接受数据,呵呵。
分享到:
相关推荐
Servlet是Java Web开发中的核心组件,它允许程序员创建动态、交互式的Web应用程序。Servlet API是Java ...使用这个新的jar包,开发者可以确保他们的应用基于最新的Servlet规范,从而利用到更多的功能和性能优化。
Servlet_API帮助文档是Java Web开发中的重要参考资料,它详尽地介绍了Servlet API的各个组成部分以及如何使用这些组件来构建动态Web应用程序。Servlet API是Java Servlet技术的核心,它为服务器端编程提供了一组接口...
WebSocket在Android端可以使用`java.net.WebSocket` API,Servlet端则可以通过`javax.websocket`包实现。 10. **错误处理和调试**:在实际开发中,必须考虑网络异常、服务器错误等可能情况,添加适当的错误处理代码...
在IT行业中,构建Android应用程序与后端服务器交互是常见的需求,这里我们主要关注"android服务端jsp+servlet+mysql"这个主题。这个组合涉及到Android客户端、Java Web服务端以及数据库管理,下面将详细阐述这三个...
这份`servlet-API.docs`压缩包包含了详尽的Servlet API参考文档,帮助开发者理解和使用这些功能。 一、Servlet API概述 Servlet API是Java EE(以前的J2EE)的一部分,它定义了服务器端程序如何与Web客户端(如...
Servlet是Java平台上的一个核心技术,用于开发...如果你打算学习或使用Servlet,你需要了解Servlet的基本概念、生命周期、API以及如何在各种Servlet容器中部署和管理它们。这将为你打开通往服务器端Java开发的大门。
本示例主要关注Android客户端如何与Servlet服务端进行有效的通信,涉及了多种数据传输方式,如传递参数、文本以及XML数据。以下是对这些知识点的详细解释: 1. **HTTP基础**: - Android客户端与Servlet服务端交互...
Spring MVC利用Servlet API来处理HTTP请求,通过`HttpServlet`的`doGet`和`doPost`等方法进行服务端逻辑处理。 在Spring MVC中,DispatcherServlet是一个关键组件,它作为所有请求的前端控制器,负责调度请求到相应...
Servlet API 2.1广泛应用于构建企业级Web应用和服务端应用程序。它适用于需要高性能和高可扩展性的场景,如电子商务网站、在线银行系统、社交网络平台等。通过利用Servlet API 2.1提供的强大功能,开发人员可以构建...
Servlet API 是Java Web开发中的核心组件,主要用于处理HTTP请求和服务端的应用程序逻辑。它由Java Servlet规范定义,主要包含在`javax.servlet`和`javax.servlet.http`这两个包中。这两个包提供了大量的接口和类,...
在这个场景中,我们看到JS客户端利用RSA公钥进行加密,然后将加密后的数据发送到Java服务端的Servlet,Servlet再用对应的私钥进行解密。这个过程确保了数据在传输过程中不被未经授权的第三方截取或篡改。 首先,...
Servlet API是Java Servlet技术的基础,它定义了一系列接口和类,使得开发者能够创建HTTP服务端程序。其中,`javax.servlet.Servlet`是所有Servlet的基类,包含了初始化、服务和销毁等生命周期方法。`javax.servlet....
例如,一个系统可能需要通过Servlet接收用户请求,然后利用JavaMail API发送包含附件的电子邮件,并使用JAF处理邮件中的复杂内容类型。在开发环境中,这些库通常作为项目的依赖项添加到类路径中,而在生产环境中,...
总的来说,"一个简单的服务端程序"涉及了使用Java Servlet技术创建Web服务的基本概念和步骤。通过编写Servlet类,处理HTTP请求,并在Servlet容器中运行,可以构建出动态响应用户请求的Web应用。"Service2.2"这个文件...
综合以上,一个基于Java Servlet的服务端框架应该包括以下组件:用于处理上传和下载的控制器,使用线程池进行并发处理的机制,安全的加密策略,与数据库交互的模块,以及可能的第三方服务集成,如图灵机器人。...
在开发Android应用时,与服务器进行数据交互是必不可少的一部分,这通常通过HTTP协议实现,而Servlet作为Java EE的一部分,常用于构建服务器端的RESTful API。在这个案例中,我们将探讨如何利用MySQL数据库和Servlet...
源码运行时需要导入JAR包,这通常包括Servlet API JAR文件(如servlet-api.jar)、JDBC驱动JAR(对应SQL SERVER可能是mssql-jdbc.jar)以及可能的其他依赖库。这些外部库提供了必要的类和方法,使得开发人员能够调用...
2. 服务端接收处理:Java服务端的Servlet接收到请求,解析参数,执行相应的业务逻辑。 3. 服务端返回响应:处理完成后,服务端以JSON或XML格式封装结果,通过HTTP响应返回给客户端。 4. 客户端解析响应:Delphi...
Servlet-API是Java Web开发中的...综上所述,Servlet-API是构建动态Web应用的基础,通过其提供的各种组件,开发者可以轻松地处理HTTP请求,实现复杂的服务端逻辑,并与其他Web组件协同工作,构建出功能丰富的Web应用。