1. 重庆云诚科技 > 互联网资讯 >

〔混合app开发教程〕java App开发教程

导读用java开发app后台用什么框架贡献用户名:【荼谧故人】 ,现在由重庆云诚科技小编为你解答与【混合app开发教程】的相关内容!用java开发app后台用Struts2,SpringMVC都是可以的。学习jav...

本文中提到了2个关于混合app开发教程的相关看点,同时还对java App开发教程也有不同的看法,希望本文能为您找到想要的答案,记得关注哦!

用java开发app后台用什么框架

贡献用户名:【荼谧故人】 ,现在由重庆云诚科技小编为你解答与【混合app开发教程】的相关内容!

用java开发app后台用Struts2,SpringMVC都是可以的。学习java开发推荐选择千锋教育,该教育机构拥有国内一体化教学管理及学员服务,在职业教育发展道路上不断探索前行。

最佳答案java的学习方法:

1、面向对象的知识:java是一种面向对象的开发语言,因此熟悉面向对象对学习java很有必要,你需要了解:什么是对象,什么是类,什么是封装,什么是多态,什么是继承,什么是抽象类,什么是接口。理解概念后,还需要知道这些概念是如何体现的,如类和对象有什么区别;类是如何封装的。

2、java语法:如果已经有了开发经验,那么学习java语法将比较容易。如果有C++等面向对象语言的开发经验,那就只需简单的翻看一下介绍java的相关书籍就可以了。如果是新手,没有关系,多下些工夫,好好研究一本java初级教程之类的书就可以了。

想要了解更多关于java开发的相关信息,推荐咨询千锋教育。千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。课程包含HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训、区块链培训、影视剪辑包装培训、游戏原画培训、全媒体运营培训。

以上就是重庆云诚科技小编解答(荼谧故人)贡献关于“用java开发app后台用什么框架”的答案,接下来继续为你详解体育用户(衣绮怀)回答“如何用java开发微信”的一些相关解答,希望能解决你的问题!

用java开发app后台用什么框架

如何用java开发微信

贡献用户名:【衣绮怀】 ,现在由重庆云诚科技小编为你详解与【混合app开发教程】的相关内容!

最佳答案说明:

本次的教程主要是对微信公众平台开发者模式的讲解,网络上很多类似文章,但很多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行讲解分析,让初学者尽快上手。

在阅读本文之前,应对微信公众平台的官方开发文档有所了解,知道接收和发送的都是xml格式的数据。另外,在做内容回复时用到了图灵机器人的api接口,这是一个自然语言解析的开放平台,可以帮我们解决整个微信开发过程中最困难的问题,此处不多讲,下面会有其详细的调用方式。

1.1 在登录微信官方平台之后,开启开发者模式,此时需要我们填写url和token,所谓url就是我们自己服务器的接口,用WechatServlet.java来实现,相关解释已经在注释中说明,代码如下:

[java] view plain copy

package demo.servlet;  

import java.io.BufferedReader;  

import java.io.IOException;  

import java.io.InputStream;  

import java.io.InputStreamReader;  

import java.io.OutputStream;  

import javax.servlet.ServletException;  

import javax.servlet.http.HttpServlet;  

import javax.servlet.http.HttpServletRequest;  

import javax.servlet.http.HttpServletResponse;  

import demo.process.WechatProcess;  

/** 

* 微信服务端收发消息接口 

*  

* @author pamchen-1 

*  

*/  

public class WechatServlet extends HttpServlet {  

/** 

* The doGet method of the servlet. <br> 

*  

* This method is called when a form has its tag value method equals to get. 

*  

* @param request 

*            the request send by the client to the server 

* @param response 

*            the response send by the server to the client 

* @throws ServletException 

*             if an error occurred 

* @throws IOException 

*             if an error occurred 

*/  

public void doGet(HttpServletRequest request, HttpServletResponse response)  

throws ServletException, IOException {  

request.setCharacterEncoding("UTF-8");  

response.setCharacterEncoding("UTF-8");  

/** 读取接收到的xml消息 */  

StringBuffer sb = new StringBuffer();  

InputStream is = request.getInputStream();  

InputStreamReader isr = new InputStreamReader(is, "UTF-8");  

BufferedReader br = new BufferedReader(isr);  

String s = "";  

while ((s = br.readLine()) != null) {  

sb.append(s);  

}  

String xml = sb.toString(); //次即为接收到微信端发送过来的xml数据  

String result = "";  

/** 判断是否是微信接入激活验证,只有首次接入验证时才会收到echostr参数,此时需要把它直接返回 */  

String echostr = request.getParameter("echostr");  

if (echostr != null && echostr.length() > 1) {  

result = echostr;  

} else {  

//正常的微信处理流程  

result = new WechatProcess().processWechatMag(xml);  

}  

try {  

OutputStream os = response.getOutputStream();  

os.write(result.getBytes("UTF-8"));  

os.flush();  

os.close();  

} catch (Exception e) {  

e.printStackTrace();  

}  

}  

/** 

* The doPost method of the servlet. <br> 

*  

* This method is called when a form has its tag value method equals to 

* post. 

*  

* @param request 

*            the request send by the client to the server 

* @param response 

*            the response send by the server to the client 

* @throws ServletException 

*             if an error occurred 

* @throws IOException 

*             if an error occurred 

*/  

public void doPost(HttpServletRequest request, HttpServletResponse response)  

throws ServletException, IOException {  

doGet(request, response);  

}  

}  

1.2 相应的web.xml配置信息如下,在生成WechatServlet.java的同时,可自动生成web.xml中的配置。前面所提到的url处可以填写例如:http;//服务器地址/项目名/wechat.do

[html] view plain copy

<xml version="1.0" encoding="UTF-8">  

<web-app version="2.5"   

xmlns=";   

xmlns:xsi=";   

xsi:schemaLocation=";  

;>  

<servlet>  

<description>This is the description of my J2EE component</description>  

<display-name>This is the display name of my J2EE component</display-name>  

<servlet-name>WechatServlet</servlet-name>  

<servlet-class>demo.servlet.WechatServlet</servlet-class>  

</servlet>  

<servlet-mapping>  

<servlet-name>WechatServlet</servlet-name>  

<url-pattern>/wechat.do</url-pattern>  

</servlet-mapping>  

<welcome-file-list>  

<welcome-file>index.jsp</welcome-file>  

</welcome-file-list>  

</web-app>  

1.3 通过代码,我们已经实现了微信公众平台开发的框架,即开通开发者模式并成功接入、接收消息和发送消息这三个步骤。

下面就讲解其核心部分——解析接收到的xml数据,并以文本类消息为例,通过图灵机器人api接口实现智能回复。

2.1 首先看一下整体流程处理代码,包括:xml数据处理、调用图灵api、封装返回的xml数据。

[java] view plain copy

package demo.process;  

import java.util.Date;  

import demo.entity.ReceiveXmlEntity;  

/** 

* 微信xml消息处理流程逻辑类 

* @author pamchen-1 

*/  

public class WechatProcess {  

/** 

* 解析处理xml、获取智能回复结果(通过图灵机器人api接口) 

* @param xml 接收到的微信数据 

* @return  最终的解析结果(xml格式数据) 

*/  

public String processWechatMag(String xml){  

/** 解析xml数据 */  

ReceiveXmlEntity xmlEntity = new ReceiveXmlProcess().getMsgEntity(xml);  

/** 以文本消息为例,调用图灵机器人api接口,获取回复内容 */  

String result = "";  

if("text".endsWith(xmlEntity.getMsgType())){  

result = new TulingApiProcess().getTulingResult(xmlEntity.getContent());  

}  

/** 此时,如果用户输入的是“你好”,在经过上面的过程之后,result为“你也好”类似的内容  

*  因为最终回复给微信的也是xml格式的数据,所有需要将其封装为文本类型返回消息 

* */  

result = new FormatXmlProcess().formatXmlAnswer(xmlEntity.getFromUserName(), xmlEntity.getToUserName(), result);  

return result;  

}  

}  

2.2 解析接收到的xml数据,此处有两个类,ReceiveXmlEntity.java和ReceiveXmlProcess.java,通过反射的机制动态调用实体类中的set方法,可以避免很多重复的判断,提高代码效率,代码如下:

[java] view plain copy

package demo.entity;  

/** 

* 接收到的微信xml实体类 

* @author pamchen-1 

*/  

public class ReceiveXmlEntity {  

private String ToUserName="";  

private String FromUserName="";  

private String CreateTime="";  

private String MsgType="";  

private String MsgId="";  

private String Event="";  

private String EventKey="";  

private String Ticket="";  

private String Latitude="";  

private String Longitude="";  

private String Precision="";  

private String PicUrl="";  

private String MediaId="";  

private String Title="";  

private String Description="";  

private String Url="";  

private String Location_X="";  

private String Location_Y="";  

private String Scale="";  

private String Label="";  

private String Content="";  

private String Format="";  

private String Recognition="";  

public String getRecognition() {  

return Recognition;  

}  

public void setRecognition(String recognition) {  

Recognition = recognition;  

}  

public String getFormat() {  

return Format;  

}  

public void setFormat(String format) {  

Format = format;  

}  

public String getContent() {  

return Content;  

}  

public void setContent(String content) {  

Content = content;  

}  

public String getLocation_X() {  

return Location_X;  

}  

public void setLocation_X(String locationX) {  

Location_X = locationX;  

}  

public String getLocation_Y() {  

return Location_Y;  

}  

public void setLocation_Y(String locationY) {  

Location_Y = locationY;  

}  

public String getScale() {  

return Scale;  

}  

public void setScale(String scale) {  

Scale = scale;  

}  

public String getLabel() {  

return Label;  

}  

public void setLabel(String label) {  

Label = label;  

}  

public String getTitle() {  

return Title;  

}  

public void setTitle(String title) {  

Title = title;  

}  

public String getDescription() {  

return Description;  

}  

public void setDescription(String description) {  

Description = description;  

}  

public String getUrl() {  

return Url;  

}  

public void setUrl(String url) {  

Url = url;  

}  

public String getPicUrl() {  

return PicUrl;  

}  

public void setPicUrl(String picUrl) {  

PicUrl = picUrl;  

}  

public String getMediaId() {  

return MediaId;  

}  

public void setMediaId(String mediaId) {  

MediaId = mediaId;  

}  

public String getEventKey() {  

return EventKey;  

}  

public void setEventKey(String eventKey) {  

EventKey = eventKey;  

}  

public String getTicket() {  

return Ticket;  

}  

public void setTicket(String ticket) {  

Ticket = ticket;  

}  

public String getLatitude() {  

return Latitude;  

}  

public void setLatitude(String latitude) {  

Latitude = latitude;  

}  

public String getLongitude() {  

return Longitude;  

}  

public void setLongitude(String longitude) {  

Longitude = longitude;  

}  

public String getPrecision() {  

return Precision;  

}  

public void setPrecision(String precision) {  

Precision = precision;  

}  

public String getEvent() {  

return Event;  

}  

public void setEvent(String event) {  

Event = event;  

}  

public String getMsgId() {  

return MsgId;  

}  

public void setMsgId(String msgId) {  

MsgId = msgId;  

}  

public String getToUserName() {  

return ToUserName;  

}  

public void setToUserName(String toUserName) {  

今天有关内容《〔混合app开发教程〕java App开发教程》先分享到这里了,如果想要了解更多,请关注www.cqycseo.com,您的关注是给小编最大的鼓励。

推荐文章:

  • 膜的组词和部首,膜的组词和拼音是什么
  • 亲字组词100个 亲字的组词有
  • 酬谢是什么意思,定当酬谢是什么意思
  • 异的组词和部首,株的组词和部首
  • 箭组词和拼音 耸组词和拼音部首
  • 有志不在年高的意思-有志不在年高的意思雨来表达了
  • 繁衍的意思 繁衍的意思简单解释
  • 彤组词,胀组词和拼音
  • 血泊的拼音 泊的拼音
  • 螺组词拼音 螺的组词和拼音
  • 本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:https://www.cqycseo.com/zixun/4678.html

    联系我们