java web给手机端写接口HttpServletRequest ,HttpServletResponse

前言:

作为一名android开发人员,网络数据都是web开发人员提供,每次让他们写一个接口都跟求神拜佛一样,与其求别人还不如自己动手,这是八百年前写的word,今天把它记在csdn,防止以后忘记还可以看看。

1.接口的数据源来自于数据库。(这里没办法提供方法教你怎么查数据,自己去网站上学吧,我觉得挺不错的)

http://www.w3school.com.cn/sql/sql_wildcards.asp

2.我所写接口的框架是structs+spring+ibatis,要会接口首先要学会这三个框架怎么用。下面是myecplise开发的web项目结构图张这样:

我们有个大概的了解了,之后你新建一个Javaweb项目都会有个web.xml,这个是入口,我们来看看它里面有啥:

web.xml中的东西我没办法讲述的很清楚,待会儿附上源码,公司人说每次新建项目的时候直接复制一下改改就好了,这大概就是通病一是比较懒,而是一个个敲麻烦还要全懂。

3.先说接口,顺序好像反了,这是以登陆为例:

BaseAction类继承ActionSupport类(xwork.jar),我们在BaseAction类写了一些基本的输出方法,就是手机端不是向web请求嘛,web响应后要给手机东西,就好比我登陆的时候给用户名和密码给web,web就去服务器查询是否有这号人,如果有或者没有,web就得告诉手机端,输出格式一般给的是json格式,这是web端的BaseAction类,这个类里面还有HttpServletRequest(手机端传给web的用户名和密码,web就是从这里取出),HttpServletResponse的到他们的实例,以及HttpSession对象,session就是浏览器缓存,比如你登陆别人的网站,别人就可以通过session吧你的账号记录下来。用gessession就可得到。

4,我们写一个LoginAction继承BaseAction,其中写一个登陆的方法如下:

    /**
     * @see 手机端登陆的接口
     */
    @Resource Loginservice loginService;
    //@Resource代表着引用资源
    public void startLogin(){
    Map<String,Object> map=new HashMap<String,Object>();
    //得到请求对象
    HttpServletRequest request=this.getRequest();
    //拿到手机端传给我们的username这个key所对应的的value,用map装起来
    map.put("username",request.getParameter("username"));
     //拿到密码不为空就 吧它用MD5加密用map装起来,用MD5是为了账户安全,注册的时候都是加密了存入数据库的,简单防止剽窃
     if(StringUtils.isNotNull(request.getParameter("password"))) {
            String password = Md5Utils.MD5_32(request.getParameter("password"));
            map.put("password", password);
        }
        //在这里就是Service去掉dao层,dao层掉ibatis(数据库层)经过数据库的查询得到一个这个人的信息,查不到返回空
        String json = loginService.Loginmobile(map);
        JSONObject jsonobj=new JSONObject();
        if(json==null){
            json="";
            jsonobj.put("state", "false");
            jsonobj.put("msg", "登陆失败,用户名或密码错误");
        }else{
            jsonobj.put("userinfo", json);
            jsonobj.put("state", "true");
            jsonobj.put("msg", "登陆成功");
        }
        //在这里输出,手机端就拿到web返回的值了
        this.outJsonString(jsonobj.toString());
    }

5.LoginService为接口,里面定义了一系列方法,loginService为其对象,而接口中就有刚调用的Loginmobile方法名,而其方法体在LoginserviceImpl中实现,LoginserviceImpl实现LoginService接口,方法体如下:

public class LoginserviceImpl implements Loginservice{
    @Resource LoginDao loginDao; //引用dao资源
//方法调用LoginDao 的Loginmobile方法
    public String Loginmobile(Map<String,Object> params){
           return loginDao.Loginmobile(params);
    }

6.LoginDao 也是接口类,他的实现类是LoginDaoImpl,LoginDao 类申明了一个Loginmobile方法名,其方法体在LoginDaoImpl中实现。具体实现为:

LoginDaoImpl类继承AbstactTemplateDao 类()

public class LoginDaoImpl extends AbstactTemplateDao implements LoginDao {
    public String Loginmobile(Map<String,Object> params){
    //查询数据库,"login.loginmobile"中,login代表ibatis中name=login的文件,下的loginmobile方法(就是查语句,看下图)
        List<Map<String,String>> list = this.getSqlMapClientTemplate().queryForList("login.loginmobile",params);
        return list.toString();
    }

现在知道大致的流程了吧,总结一下:

一个登陆模块我们把它划在一个包下,不管是web还是手机登陆都放这里,一个登陆包下分四个分支,一个action层,一个service层(业务逻辑层),一个dao层(数据库操作层),一个Entry(实体类,对应数据库表) ,四个层次,如下图:

打箭头的代表要配置,所有的继承Baseaction的类以及各自的service实现类和dao的实现类都要在各自对应的文件中配置,比如loginaction就要在applicationContext-action中配置如下

<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean name="loginAction" class="org.U9APP.login.action.LoginAction" scope="prototype"></bean>

</beans>

dao的实现类也是一样,在applicationContext-dao中注册

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!-- 登陆管理 -->
    <bean name="loginDao" class="org.U9APP.login.dao.LoginDaoImpl" />

</beans>

structs也有类似的配置,而之前说的web.xml中吧spring中下的四个文件配置了。sping中的applicationContext是用来配置ibatis的,上面有个图画错了哈,最后就是你写的接口的url是这样拼起来的。

http:192.168.0.100:8080/loginAction/startLogin.action?username=”123”&password=”123456”

其中:

192.168.0.100你电脑ip,8080tomcat端口号,loginAction为applicationContext-action中登陆所在类class=”org.U9APP.login.action.LoginAction”它的name值,startLogin为登陆类下的刚写的登陆方法名。action,?后为参数,usname为key,这个是web和手机对接key,123为用户名,123456为密码,这个key可以换成其他的字符串不过你要知其意思并且要和手机一直才能收到。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-21 20:28:55

java web给手机端写接口HttpServletRequest ,HttpServletResponse的相关文章

java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl

在spring+hibernate的web项目中,处理数据层通常会使用Spring框架提供的HibernateTemplate类提供的方法.通常的用法是每一个实体类对应的去写DAO层的接口和实现类.每个实现类中都写hibernateTemp.save(entity).hibernateTemp.update(entity).hibernateTemp.get(id)...这样写固然没错,但存在着大量的重复代码.所以懒惰的程序员烦了,他们要写一个通用的实现类来解决这个问题,让DAO层解放出来.如果

java Web项目Service层通用接口和entityVo对象与entity对象转化问题的解决方案

Service层的接口中有一些比较常用方法,一次又一次的在新的Service层中被书写,所以懒惰的程序员又烦了,他们决定写个通用接口来解决这个问题. 有些项目中,实体类即承担接收表单数据的任务,又承担持久化任务,很省心.但有些项目中这两项任务的执行类不是同一个,一个Entity.java来执行数据 持久化的任务,一个EntityVo.java类来执行接收表单数据的任务.那么问题来了:Service层需要的是entityVo对象,而DAO层需要的是entity对象,这两个对象 会有一些相同的属性和

Jmeter获取手机端接口

使用Jmeter获取手机端请求接口信息与Fiddler原理类似,都是通过设置中间代理服务器的方式截获手机端发送的请求信息.使用的步骤相对fiddler来说稍微简单一点,获取接口信息分为以下几个步骤: 1. Jmeter中添加http代理服务器 a) 添加原件步骤:右键工作台->添加->非测试原件->HTTP代理服务器 b)   设置HTTP代理服务器信息 端口:默认端口号为8080,无特殊情况不必修改 目标控制器:选择将获取到的接口信息保存在何处 包含模式:仅获取包含模式中添加的样式的请

Java Web系列:Java Web基础

1.Java Web 模块结构 JSP文件和AXPX文件类似,路径和URL一一对应,都会被动态编译为单独class.Java Web和ASP.NET的核心是分别是Servlet和IHttpHandler接口,因此无论是基础的Page文件(JSP.ASPX)方式还是后来发展的MVC方式(Spring MVC.ASP.NET MVC)都是基于核心接口的基础上再次封装和扩展(DispatcherServlet.MvcHandler). 除JSP文件外,其他全部文件部署在应用目录的WEB-INF子目录下

简单两步让博客园支持手机端显示

博客园的模板是没有兼容手机端显示的,阅读体验比较差.本文教你如何简单几步让你的博客支持手机端显示.找一个夜深人静,没有人浏览你博客的时间点,开始吧. 1.添加js代码 在博客园后台的“设置”菜单下,有一项页首Html代码,此处写js代码也是可以生效的,将如下代码复制过去: <script> var content = 'width=device-width, initial-scale=1 user-scalable=no'; var viewport = document.createEle

PC端写的API接口和手机端APP联合调试

一.遇到问题的情况:项目框架:asp.net MVC5 ,写的给手机端调用的API接口. 二.自己在本地 IIS上部署项目,在手机端的请求服务器上把地址和端口换上本地部署的,如图所示 三.用管理员的身份打开VS,打开项目.找到调试-->附加到进程 找到部署项目运行对应的进程,选择后添加添加. 然后你的程序也就 进入调试模式,从APP上调用接口,就可以进入到PC端的调试模式,看看传参对不对,PC端代码逻辑等bug调试. 原文地址:https://www.cnblogs.com/ElvisZhong

写给java web一年左右工作经验的人

摘要 大学就开始学习web,磕磕绊绊一路走过来,当中得到过开源社区很多的帮助,总结了这些年来的技术积累,回馈给开源社区. ps:图片都是从网上盗...感谢原作者. ps:文字千真万确都是我自己写的. 在此,特别感谢Hansen,他曾经有私的帮助过我(两包零食),他是一个很强的启蒙胖子. 我把我这些年在java学习中学到的东西,按照项目开发中可能遇见的场景,进行了一次梳理. 这个故事是我最后决定加上来的,我非常喜欢这个故事,软件工程中有一个被戏称为Cargo Cult编程法的编程风格,而下面这个故

手机端网页web开发要点

1.初始化 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,u

手机端web页面的一些注意事项

1.viewport的写法 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> 宽度设为设备宽度(手机屏幕宽度),默认缩放比例设为不缩放,用户是否可手动缩放设为“否” 2.device-width具体是什么呢? 第一代iphone的时候,分辨率为320*480,屏幕尺寸为3.5寸(注意,这个3.5寸说的