微信公众平台测试账号开发,用Java开发,已经成功原样shell 函数返回字符串随即字符串

java微信公众号开发案例
作者:伟雪无痕
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了java微信公众号开发案例,如何接入公众号,订阅号怎么样接收消息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
微信公众号开发一般是针对企业和组织的,个人一般只能申请订阅号,并且调用的接口有限,下面我们就来简单的描述下接入公众号的步骤:
1、首先你需要一个邮箱在微信公众号平台进行注册;
&&&& 注册的方式有订阅号、公众号、小程序和企业号,个人我们这里只能选择订阅号
2、注册完后,我们登录到公众号平台---&开发---&基本配置,这里需要填写URL和token,URL就是我们使用服务器的接口;
3、Java Web服务器程序编译好且在服务器上部署可以运行的话,可在微信公众号进行在线接口调试:
&&& 1)、选择合适的接口
&&& 2)、系统会生成该接口的参数表,您可以直接在文本框内填入对应的参数值(红色星号表示该字段必填)
&&& 3)、点击检查问题按钮,即可得到相应的调试信息
&& eg:获取access_token的步骤:
&& 1)、接口类型:基础支持
&& 2)、接口列表:获取access_token接口/token
&& 3)、填写相应的参数:grant_type、appid、secret
&& 4)、点击检查问题
&& 5)、验证成功会返回结果和提示,结果为:200 ok,提示:Request successful即表示验证成功
&& 我们这里验证比较多的是消息接口调试:文本消息、图片消息、语音消息、视频消息、etc
4、接口有不理解的地方,可进入开发--&开发者工具--&开发者文档进行查询
5、接口权限:订阅号主要有基础支持、接收消息及网页服务里面的一些接口
下面我们主要讲订阅号怎么样接收消息的案例:
1、需要申请一个个人微信订阅号
2、url服务器和服务器端代码部署(可以用腾讯云or阿里云服务器)
1)、AccountsServlet.java类,验证来自微信服务器和微信服务器的消息处理
package cn.jon.wechat.
import java.io.IOE
import java.io.PrintW
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import cn.jon.wechat.service.AccountsS
import cn.jon.wechat.utils.SignU
public class AccountsServlet extends HttpServlet {
public AccountsServlet() {
public void destroy() {
super.destroy();
// Put your code here
* 确认请求来自于微信服务器
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("接口测试开始!!!");
//微信加密签名
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
//随机字符串
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
//通过校验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if(SignUtil.checkSignature(signature,timestamp,nonce)){
out.print(echostr);
out.close();
response.encodeRedirectURL("success.jsp");
* 处理微信服务器发来的消息
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//消息的接受、处理、响应
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//调用核心业务类型接受消息、处理消息
String respMessage = AccountsService.processRequest(request);
//响应消息
PrintWriter out = response.getWriter();
out.print(respMessage);
out.close();
public void init() throws ServletException {
// Put your code here
2)、SignUtil.java类,请求校验工具类,token需要和微信中填写的token一致
package cn.jon.wechat.
import java.security.MessageD
import java.security.NoSuchAlgorithmE
import java.util.A
import java.util.I
import java.util.M
import java.util.S
import java.util.concurrent.ConcurrentHashM
* 请求校验工具类
* @author jon
public class SignUtil {
//与微信配置中的的Token一致
private static String token = "";
public static boolean checkSignature(String signature, String timestamp,
String nonce) {
String[] arra = new String[]{token,timestamp,nonce};
//将signature,timestamp,nonce组成数组进行字典排序
Arrays.sort(arra);
StringBuilder sb = new StringBuilder();
for(int i=0;i&arra.i++){
sb.append(arra[i]);
MessageDigest md =
String stnStr =
md = MessageDigest.getInstance("SHA-1");
byte[] digest = md.digest(sb.toString().getBytes());
stnStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//释放内存
//将sha1加密后的字符串与signature对比,标识该请求来源于微信
return stnStr!=null?stnStr.equals(signature.toUpperCase()):
* 将字节数组转换成十六进制字符串
* @param digestArra
private static String byteToStr(byte[] digestArra) {
// TODO Auto-generated method stub
String digestStr = "";
for(int i=0;i&digestArra.i++){
digestStr += byteToHexStr(digestArra[i]);
return digestS
* 将字节转换成为十六进制字符串
private static String byteToHexStr(byte dByte) {
// TODO Auto-generated method stub
char[] Digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] tmpArr = new char[2];
tmpArr[0] = Digit[(dByte&&&4)&0X0F];
tmpArr[1] = Digit[dByte&0X0F];
String s = new String(tmpArr);
public static void main(String[] args) {
/*byte dByte = 'A';
System.out.println(byteToHexStr(dByte));*/
Map&String,String& map = new ConcurrentHashMap&String, String&();
map.put("4", "zhangsan");
map.put("100", "lisi");
Set set = map.keySet();
Iterator iter = set.iterator();
while(iter.hasNext()){
String keyV = (String) iter.next();
String key =(String)iter.next();
System.out.println(map.get(key));
System.out.println(map.get(iter.next()));
/*for(int i=0;i&map.size();i++){
3)、AccountsService.java服务类,主要是消息的请求和响应处理,并且当用户关注你的公众号的时候,可以设置默认推送消息
package cn.jon.wechat.
import java.util.D
import java.util.M
import javax.servlet.http.HttpServletR
import cn.jon.wechat.message.req.ImageM
import cn.jon.wechat.message.req.LinkM
import cn.jon.wechat.message.req.LocationM
import cn.jon.wechat.message.req.VideoM
import cn.jon.wechat.message.req.VoiceM
import cn.jon.wechat.message.resp.TextM
import cn.jon.wechat.utils.MessageU
* 解耦,使控制层与业务逻辑层分离开来,主要处理请求,响应
* @author jon
public class AccountsService {
public static String processRequest(HttpServletRequest request) {
String respMessage =
//默认返回的文本消息内容
String respContent = "请求处理异常,请稍后尝试!";
//xml请求解析
Map&String,String& requestMap = MessageUtil.pareXml(request);
//发送方账号(open_id)
String fromUserName = requestMap.get("FromUserName");
//公众账号
String toUserName = requestMap.get("ToUserName");
//消息类型
String msgType = requestMap.get("MsgType");
//默认回复此文本消息
TextMessage defaultTextMessage = new TextMessage();
defaultTextMessage.setToUserName(fromUserName);
defaultTextMessage.setFromUserName(toUserName);
defaultTextMessage.setCreateTime(new Date().getTime());
defaultTextMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_TEXT);
defaultTextMessage.setFuncFlag(0);
// 由于href属性值必须用双引号引起,这与字符串本身的双引号冲突,所以要转义
defaultTextMessage.setContent("欢迎访问&a href=\"http://blog.csdn.net/j086924\"&jon的博客&/a&!");
defaultTextMessage.setContent(getMainMenu());
// 将文本消息对象转换成xml字符串
respMessage = MessageUtil.textMessageToXml(defaultTextMessage);
//文本消息
if(msgType.equals(MessageUtil.MESSSAGE_TYPE_TEXT)){
//respContent = "Hi,您发送的是文本消息!";
//回复文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(toUserName);
textMessage.setFromUserName(fromUserName);
//这里需要注意,否则无法回复消息给用户了
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
textMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_TEXT);
textMessage.setFuncFlag(0);
respContent = "Hi,你发的消息是:"+requestMap.get("Content");
textMessage.setContent(respContent);
respMessage = MessageUtil.textMessageToXml(textMessage);
//图片消息
else if(msgType.equals(MessageUtil.MESSSAGE_TYPE_IMAGE)){
ImageMessage imageMessage=new ImageMessage();
imageMessage.setToUserName(fromUserName);
imageMessage.setFromUserName(toUserName);
imageMessage.setCreateTime(new Date().getTime());
imageMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_IMAGE);
//respContent=requestMap.get("PicUrl");
imageMessage.setPicUrl("////_230X306.jpg");
respMessage = MessageUtil.imageMessageToXml(imageMessage);
//地理位置
else if(msgType.equals(MessageUtil.MESSSAGE_TYPE_LOCATION)){
LocationMessage locationMessage=new LocationMessage();
locationMessage.setToUserName(fromUserName);
locationMessage.setFromUserName(toUserName);
locationMessage.setCreateTime(new Date().getTime());
locationMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_LOCATION);
locationMessage.setLocation_X(requestMap.get("Location_X"));
locationMessage.setLocation_Y(requestMap.get("Location_Y"));
locationMessage.setScale(requestMap.get("Scale"));
locationMessage.setLabel(requestMap.get("Label"));
respMessage = MessageUtil.locationMessageToXml(locationMessage);
//视频消息
else if(msgType.equals(MessageUtil.MESSSAGE_TYPE_VIDEO)){
VideoMessage videoMessage=new VideoMessage();
videoMessage.setToUserName(fromUserName);
videoMessage.setFromUserName(toUserName);
videoMessage.setCreateTime(new Date().getTime());
videoMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_VIDEO);
videoMessage.setMediaId(requestMap.get("MediaId"));
videoMessage.setThumbMediaId(requestMap.get("ThumbMediaId"));
respMessage = MessageUtil.videoMessageToXml(videoMessage);
//链接消息
else if(msgType.equals(MessageUtil.MESSSAGE_TYPE_LINK)){
LinkMessage linkMessage=new LinkMessage();
linkMessage.setToUserName(fromUserName);
linkMessage.setFromUserName(toUserName);
linkMessage.setCreateTime(new Date().getTime());
linkMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_LINK);
linkMessage.setTitle(requestMap.get("Title"));
linkMessage.setDescription(requestMap.get("Description"));
linkMessage.setUrl(requestMap.get("Url"));
respMessage = MessageUtil.linkMessageToXml(linkMessage);
//语音消息
else if(msgType.equals(MessageUtil.MESSSAGE_TYPE_VOICE)){
VoiceMessage voiceMessage=new VoiceMessage();
voiceMessage.setToUserName(fromUserName);
voiceMessage.setFromUserName(toUserName);
voiceMessage.setCreateTime(new Date().getTime());
voiceMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_VOICE);
voiceMessage.setMediaId(requestMap.get("MediaId"));
voiceMessage.setFormat(requestMap.get("Format"));
respMessage = MessageUtil.voiceMessageToXml(voiceMessage);
//事件推送
else if(msgType.equals(MessageUtil.MESSSAGE_TYPE_EVENT)){
//事件类型
String eventType = requestMap.get("Event");
if(eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)){
respContent = "谢谢关注!";
//取消订阅
else if(eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)){
System.out.println("取消订阅");
else if(eventType.equals(MessageUtil.EVENT_TYPE_CLICK)){
//自定义菜单消息处理
System.out.println("自定义菜单消息处理");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return respM
public static String getMainMenu()
StringBuffer buffer =new StringBuffer();
buffer.append("您好,我是jon,请回复数字选择服务:").append("\n");
buffer.append("1、我的博客").append("\n");
buffer.append("2、 歌曲点播").append("\n");
buffer.append("3、 经典游戏").append("\n");
buffer.append("4 、聊天打牌").append("\n\n");
buffer.append("回复"+"0"+"显示帮助菜单");
return buffer.toString();
4)、MessageUtil.java帮助类,包括常量的定义和xml消息转换和处理
package cn.jon.wechat.
import java.io.InputS
import java.io.W
import java.util.HashM
import java.util.L
import java.util.M
import javax.servlet.http.HttpServletR
import org.dom4j.D
import org.dom4j.E
import org.dom4j.io.SAXR
import cn.jon.wechat.message.req.ImageM
import cn.jon.wechat.message.req.LinkM
import cn.jon.wechat.message.req.LocationM
import cn.jon.wechat.message.req.VideoM
import cn.jon.wechat.message.req.VoiceM
import cn.jon.wechat.message.resp.A
import cn.jon.wechat.message.resp.MusicM
import cn.jon.wechat.message.resp.NewsM
import cn.jon.wechat.message.resp.TextM
import com.thoughtworks.xstream.XS
import com.thoughtworks.xstream.core.util.QuickW
import com.thoughtworks.xstream.io.HierarchicalStreamW
import com.thoughtworks.xstream.io.xml.PrettyPrintW
import com.thoughtworks.xstream.io.xml.XppD
* 各种消息的处理类
* @author jon
public class MessageUtil {
* 文本类型
public static final String MESSSAGE_TYPE_TEXT = "text";
* 音乐类型
public static final String MESSSAGE_TYPE_MUSIC = "music";
* 图文类型
public static final String MESSSAGE_TYPE_NEWS = "news";
* 视频类型
public static final String MESSSAGE_TYPE_VIDEO = "video";
* 图片类型
public static final String MESSSAGE_TYPE_IMAGE = "image";
* 链接类型
public static final String MESSSAGE_TYPE_LINK = "link";
* 地理位置类型
public static final String MESSSAGE_TYPE_LOCATION = "location";
* 音频类型
public static final String MESSSAGE_TYPE_VOICE = "voice";
* 推送类型
public static final String MESSSAGE_TYPE_EVENT = "event";
* 事件类型:subscribe(订阅)
public static final String EVENT_TYPE_SUBSCRIBE = "subscribe";
* 事件类型:unsubscribe(取消订阅)
public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe";
* 事件类型:click(自定义菜单点击事件)
public static final String EVENT_TYPE_CLICK= "CLICK";
* 解析微信发来的请求 XML
@SuppressWarnings("unchecked")
public static Map&String,String& pareXml(HttpServletRequest request) throws Exception {
//将解析的结果存储在HashMap中
Map&String,String& reqMap = new HashMap&String, String&();
//从request中取得输入流
InputStream inputStream = request.getInputStream();
//读取输入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
//得到xml根元素
Element root = document.getRootElement();
//得到根元素的所有子节点
List&Element& elementList = root.elements();
//遍历所有的子节点取得信息类容
for(Element elem:elementList){
reqMap.put(elem.getName(),elem.getText());
//释放资源
inputStream.close();
inputStream =
return reqM
* 响应消息转换成xml返回
* 文本对象转换成xml
public static String textMessageToXml(TextMessage textMessage) {
xstream.alias("xml", textMessage.getClass());
return xstream.toXML(textMessage);
* 语音对象的转换成xml
public static String voiceMessageToXml(VoiceMessage voiceMessage) {
xstream.alias("xml", voiceMessage.getClass());
return xstream.toXML(voiceMessage);
* 视频对象的转换成xml
public static String videoMessageToXml(VideoMessage videoMessage) {
xstream.alias("xml", videoMessage.getClass());
return xstream.toXML(videoMessage);
* 音乐对象的转换成xml
public static String musicMessageToXml(MusicMessage musicMessage) {
xstream.alias("xml", musicMessage.getClass());
return xstream.toXML(musicMessage);
* 图文对象转换成xml
public static String newsMessageToXml(NewsMessage newsMessage) {
xstream.alias("xml", newsMessage.getClass());
xstream.alias("item", new Article().getClass());
return xstream.toXML(newsMessage);
* 图片对象转换成xml
public static String imageMessageToXml(ImageMessage imageMessage)
xstream.alias("xml",imageMessage.getClass());
return xstream.toXML(imageMessage);
* 链接对象转换成xml
public static String linkMessageToXml(LinkMessage linkMessage)
xstream.alias("xml",linkMessage.getClass());
return xstream.toXML(linkMessage);
* 地理位置对象转换成xml
public static String locationMessageToXml(LocationMessage locationMessage)
xstream.alias("xml",locationMessage.getClass());
return xstream.toXML(locationMessage);
* 拓展xstream,使得支持CDATA块
private static XStream xstream = new XStream(new XppDriver(){
public HierarchicalStreamWriter createWriter(Writer out){
return new PrettyPrintWriter(out){
//对所有的xml节点的转换都增加CDATA标记
boolean cdata =
@SuppressWarnings("unchecked")
public void startNode(String name,Class clazz){
super.startNode(name,clazz);
protected void writeText(QuickWriter writer,String text){
if(cdata){
writer.write("&![CDATA[");
writer.write(text);
writer.write("]]&");
writer.write(text);
5)、BaseMessage.java消息基类(包括:开发者微信号、用户账户、创建时间、消息类型、消息ID变量),文本、视频、图片消息都会继承此基类,在此基础上扩展自己的变量,可根据开发者文档中的各种消息属性进行定义
package cn.jon.wechat.message.
* 消息基类 (普通用户-公众号)
* @author jon
public class BaseMessage {
//开发者微信号
private String ToUserN
//发送方账号(一个openId)
private String FromUserN
//消息创建时间(整型)
private long CreateT
//消息类型(text/image/location/link...)
private String MsgT
//消息id 64位整型
private String MsgId;
public BaseMessage() {
// TODO Auto-generated constructor stub
public BaseMessage(String toUserName, String fromUserName, long createTime,
String msgType, String msgId) {
ToUserName = toUserN
FromUserName = fromUserN
CreateTime = createT
MsgType = msgT
MsgId = msgId;
public String getToUserName() {
return ToUserN
public void setToUserName(String toUserName) {
ToUserName = toUserN
public String getFromUserName() {
return FromUserN
public void setFromUserName(String fromUserName) {
FromUserName = fromUserN
public long getCreateTime() {
return CreateT
public void setCreateTime(long createTime) {
CreateTime = createT
public String getMsgType() {
return MsgT
public void setMsgType(String msgType) {
MsgType = msgT
public String getMsgId() {
return MsgId;
public void setMsgId(String msgId) {
MsgId = msgId;
6)、TextMessage.java文本消息,继承自5中基类,扩展内容属性
package cn.jon.wechat.message.
* 文本消息
* @author jon
public class TextMessage extends BaseMessage{
//消息内容
public String getContent() {
public void setContent(String content) {
this.content =
7)、ImageMessage.java图片消息&
package cn.jon.wechat.message.
* 图片消息
* @author jon
public class ImageMessage extends BaseMessage{
//图片链接
private String PicU
public String getPicUrl() {
return PicU
public void setPicUrl(String picUrl) {
PicUrl = picU
8)、VideoMessage.java视频消息
package cn.jon.wechat.message.
public class VideoMessage extends BaseMessage {
private String mediaId;
private String thumbMediaId;
public String getMediaId() {
return mediaId;
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
public String getThumbMediaId() {
return thumbMediaId;
public void setThumbMediaId(String thumbMediaId) {
this.thumbMediaId = thumbMediaId;
其他消息类可根据开发者文档自行进行完成,另外,开发者也可以申请公众平台测试账号,对开发的相关内容进行测试。
本文已被整理到了《》,欢迎大家学习阅读。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具 微信公众平台开发经验总结_互联网_IT/计算机_专业资料。微信公众平台开发经验总结 公司名称 文档名称 起草 审批 深圳市金证科技股份有限公司 微信公众平台开发经验总结...  微信公众平台二次开发手册_互联网_IT/计算机_专业资料。微信公众平台开发文档,提供基础jar包,微信接口调用及消息处理流程已开发好,让用户把更多的精力放到业务逻辑...  微信公众平台开发者文档_互联网_IT/计算机_专业资料。微信公众平台开发者文档 注:本人引用微信公众平台开发者文档只为方便,一切版权归微信公众平台所有。 1 目录一...  微信公众平台接口开发指南 ? 注册成为开发者 注册公众账号,需要登记自己的真实身份信息 注意:设置公众号信息时一定要谨慎, ‘公众号名称’与‘微信号’填写后是不...  微信公众平台接口开发 微盟 weimob 微信公众平台接口开发对于很多不懂程序的小企业或商家来说,微信公众平台接口开发可能是需要面对的难题。但是对于一些 微信开发程序...  简介微信公众平台消息接口为开发者提供了一种新的消息处理方式。 微信公众平台消 息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口的微 信公众账号...  微信公众平台开发模式自定义菜单接口API文档_计算机软件及应用_IT/计算机_专业资料。微信公众平台开发模式自定义菜单接口API文档 微信公众平台开发模式简介 开发者获取...  微信公众平台平台开发及代运营合同_合同协议_表格/模板_实用文档。合同编号 微信公众平台开发合同甲方: 乙方: 本着合法、公正、合作共赢的原则,以双方平等自愿为基础...  暂无评价|0人阅读|0次下载|举报文档 浅析微信公共平台二次开发可实现功能_互联网_IT/计算机_专业资料。本文主要介绍微信公共平台二次开发可实现功能。网站...只需一步,快速开始
后使用快捷导航没有帐号?
所属分类: &
微信公众平台开发教程Java版
查看: 13234|回复: 144
& 主题帖子积分
专家路上, 积分 830, 距离下一级还需 2170 积分
专家路上, 积分 830, 距离下一级还需 2170 积分
好多教程都是php写的,来个java版的,现在用java开的人也很多,应该还是比较实用。
package com.ifp.weixin.
import java.io.IOE
import java.io.PrintW
import java.io.UnsupportedEncodingE
import javax.annotation.R
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import com.ifp.weixin.biz.core.CoreS
import com.ifp.weixin.util.SignU
@Controller
@RequestMapping(&/weixinCore&)
public class WeixinController {
& && &&&@Resource(name=&coreService&)
& && &&&private CoreService coreS
& && &&&
& && &&&@RequestMapping(method = RequestMethod.GET)
& && &&&public void get(HttpServletRequest request, HttpServletResponse response) {
& && && && && & // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
& && && && && & String signature = request.getParameter(&signature&);
& && && && && & // 时间戳
& && && && && & String timestamp = request.getParameter(&timestamp&);
& && && && && & // 随机数
& && && && && & String nonce = request.getParameter(&nonce&);
& && && && && & // 随机字符串
& && && && && & String echostr = request.getParameter(&echostr&);
& && && && && & PrintWriter out =
& && && && && & try {
& && && && && && && && &out = response.getWriter();
& && && && && && && && &// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败
& && && && && && && && &if (SignUtil.checkSignature(signature, timestamp, nonce)) {
& && && && && && && && && && &&&out.print(echostr);
& && && && && && && && &}
& && && && && & } catch (IOException e) {
& && && && && && && && &e.printStackTrace();
& && && && && & } finally {
& && && && && && && && &out.close();
& && && && && && && && &out =
& && && && && & }
& && &&&}
& && &&&@RequestMapping(method = RequestMethod.POST)
& && &&&public void post(HttpServletRequest request, HttpServletResponse response) {
& && && && && & //暂时空着,在这里可处理用户请求
& && &&&}
}复制代码
游客,如果您要查看本帖隐藏内容请
& 主题帖子积分
新人求带, 积分 2, 距离下一级还需 298 积分
新人求带, 积分 2, 距离下一级还需 298 积分
不错不错不错不错不错不错不错不错
& 主题帖子积分
新人求带, 积分 10, 距离下一级还需 290 积分
新人求带, 积分 10, 距离下一级还需 290 积分
java开发的好少,希望能有更多的文章,谢谢楼主!
& 主题帖子积分
新人求带, 积分 11, 距离下一级还需 289 积分
新人求带, 积分 11, 距离下一级还需 289 积分
学习,谢谢了
& 主题帖子积分
新人求带, 积分 15, 距离下一级还需 285 积分
新人求带, 积分 15, 距离下一级还需 285 积分
嗯你手头有类似java的资料不!多搞点,我努力学学
& 主题帖子积分
新人求带, 积分 17, 距离下一级还需 283 积分
新人求带, 积分 17, 距离下一级还需 283 积分
了解一下,感谢楼主
& 主题帖子积分
略知一二, 积分 254, 距离下一级还需 346 积分
略知一二, 积分 254, 距离下一级还需 346 积分
啥时发士大夫是打发斯蒂芬
& 主题帖子积分
新人求带, 积分 6, 距离下一级还需 294 积分
新人求带, 积分 6, 距离下一级还需 294 积分
& 主题帖子积分
新人求带, 积分 2, 距离下一级还需 298 积分
新人求带, 积分 2, 距离下一级还需 298 积分
进来看看。。。。。。。。。。。。。。。。。。。。。。。。。。。。
& 主题帖子积分
新人求带, 积分 2, 距离下一级还需 298 积分
新人求带, 积分 2, 距离下一级还需 298 积分
goooooood学习学习
<是专业的第三方微信开发者平台,为生态而生。
本站为第三方微信开发者平台,非腾讯官方网站。
天津市滨海新区中新生态城中成大道生态建设公寓9号楼3层301
欢迎来这里一起喝喝茶,聊聊你的产品。
微信公众号gongzhongkaifa
工作日12小时内回复。
工作日12小时内回复。

我要回帖

更多关于 c 返回字符串 的文章

 

随机推荐