微信小程序开发(一)——使用ssh(struts2+hibernate+spring)框架实现后台与微信前台进行通信

  • Post author:
  • Post category:小程序


使用ssh框架实现对微信小程序前台的通信,做到前后台分离,后台页面都为静态页面,通过用json来现实与前台通信(面向接口编程)。在这次因为只为了实现通信所以没有用hibernate。只用了struts2+spring,也是ssh框架中struts和spring整合。实现了前台发送用户名密码,后台返回连接成功。

项目环境(Tomcat8.5+myeclipse2016 ci)

一、所需要导入的包。

1.struts2的包

2.spring的包

二、目录包结构

三、dao层代码

1.UserDao.java

package com.demo.dao;

import com.demo.po.User;

public interface UserDao {
	
	String toGet(User user);//获取前台发送的用户名密码
	
}

2.UserDaoImp.java

package com.demo.dao;

import org.springframework.stereotype.Repository;

import com.demo.po.User;
@Repository
public class UserDaoImp implements UserDao{

	@Override
	public String toGet(User user) {
		// TODO Auto-generated method stub
		String msg = user.getUsername()+user.getUserpass();
		return msg;
	}

}

四、po层代码

1.JsonResult.java

package com.demo.po;

import java.util.HashMap;
import java.util.Map;

public class JsonResult {
	private String result;
	private Map<String,Object> map = new HashMap<String, Object>();
	
	public String getResult() {
		return result;
	}
	public void setResult(String result) {
		this.result = result;
	}
	public Map<String, Object> getMap() {
		return map;
	}
	public void setMap(Map<String, Object> map) {
		this.map = map;
	}
	public String getTest(){
		return "我服务器,你连接到我了";
	}
}

2.User.java

package com.demo.po;

public class User {
	private String username;
	private String userpass;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpass() {
		return userpass;
	}
	public void setUserpass(String userpass) {
		this.userpass = userpass;
	}
	public User(String username,String userpass){
		super();
		this.username=username;
		this.userpass=userpass;
	}
	public User(){
		super();
	}
}

五、server层

1.UserService.java

package com.demo.server;

import com.demo.dao.UserDao;
import com.demo.po.User;

public interface UserService {

	public UserDao getUserDao();
	
	public void setUserDao(UserDao userDao);
	
	public String toGet(User user);
}

2.UserServiceImp.java

package com.demo.server;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.demo.dao.UserDao;
import com.demo.po.User;
@Service
public class UserServiceImp implements UserService {
	@Autowired
	private UserDao userDao;

	public UserDao getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public String toGet(User user){
		String msg = userDao.toGet(user);
		if(msg==null)
			return "failed";
		else
			return "success";
	}
}

六、Action层

1.UserAction.java

package com.demo.testAction;

import java.util.Map;
import java.util.logging.Logger;

import org.apache.struts2.interceptor.RequestAware;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

//import javax.annotation.Resource;
import com.demo.po.JsonResult;
import com.demo.po.User;
import com.demo.server.UserService;
import com.google.gson.Gson;
@Controller
public class UserAction implements RequestAware {
	@Autowired
    //@Resource(name = "userServiceImp") 如果49行报空错误可以试试这个注解。需要导的包在上面
	private UserService userService;
	private Map<String,Object>request;
	private JsonResult jsonResult;
	private User user;
	Logger log = Logger.getLogger(this.getClass().getName());


	public JsonResult getJsonResult() {
		return jsonResult;
	}


	public void setJsonResult(JsonResult jsonResult) {
		this.jsonResult = jsonResult;
	}


	public User getUser() {
		return user;
	}


	public void setUser(User user) {
		this.user = user;
	}

	
	public Map<String, Object> getRequest() {
		return request;
	}


	@Override
	public void setRequest(Map<String, Object> arg0) {
		// TODO Auto-generated method stub
		request=arg0;
	}
	
	public String toget(){
		jsonResult = new JsonResult();
		log.info("userService ---->" + userService );
		String msg = userService.toGet(user);
		jsonResult.setResult(msg);
		/*Map map = new HashMap<String, Object>();
		map.put("user", user);
		jsonResult.setMap(map);*/
		log.info(new Gson().toJson(jsonResult));
		return "success";
		
	}
	

}

七、spring的配置文件applicationContext.xml编写(因为使用注解,所以配置文件只写了自动扫描包)

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	<context:annotation-config/>
	<context:component-scan base-package="com.demo" />
</beans>

八、struts.xml配置文件编写

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="default" namespace="/" extends="struts-default,json-default">
		<action name="toget" class="com.demo.testAction.UserAction" method="toget">
           <!-- 页面显示json -->
			<result name="success" type="json">
				<param name="root">jsonResult</param>
			</result>
		</action>
	
	</package>
</struts>    

九、微信小程序前台代码

1.index.xml(点击按钮发送请求)

<!--index.wxml-->
<view class="container">
  <view class="userinfo">
    <button bindtap='requestdemo'> 发送请求 </button>
  </view>
</view>

2.index.js

//index.js
//获取应用实例
const app = getApp()

Page({
  data: {

  },
  //事件处理函数
  requestdemo:function(){
    wx:wx.request({
      url: 'http://localhost:8080/serverDemo/toget.action',
      data: {
        'user.username':'qwe',
        'user.userpass': '123'
        },
      header: {
        'content-type': 'application/json' // 默认值
      },
      method: 'GET',
      dataType: 'json',
      responseType: 'text',
      success: function(res) {
        console.log(res.data);
      },
      fail: function(res) {
        console.log("连接失败");
      }
      
    })
  },

  onLoad: function () {
  
  }
})

3.index.wxss

/**index.wxss**/
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}

.userinfo-nickname {
  color: #aaa;
}

.usermotto {
  margin-top: 200px;
}

十、效果展示

1.微信前台控制台(相当于微信小程序传值给服务器:

http://localhost:8080/serverDemo/toget.action?user.username=qwe&user.userpass=123

2.浏览器传值访问:

http://localhost:8080/serverDemo/toget.action?user.username=qwe&user.userpass=123

ps:本人也是刚学习完不久如果有说错和不足的地方欢迎指出



版权声明:本文为t554984986原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。