Swagger2Swagger207-14 05:49

小程序JAVA后台配置[完整]

这里先明确几点:

  1. 小程序前后台是分离的,前台用微信开发者工具开发,后台使用自己的技术开发;我这里用的是JAVA
  2. 刚了解到上面那一点的时候,很奇怪,这不是跨域访问么?怎么可以?后来查询了资料,知道是小程序前台 —>微信后台—>你的后台。
  3. 基于上一点,必然要保证访问的安全性,所有服务都需要验证身份,这里微信提供了用户登录机制和验证机制。

一、微信前台AJAX

  • 微信封装了AJAX,官方API文档有,照样画葫芦就可以了。

/**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    wx.request({
      url: 'http://localhost:8080/wxCode/wx_getDB',
      data: {
        phoneNum: '13738042310'
      },
      method: 'GET',
      header: {
        'content-type': 'application/json' // 默认值
      },
      success: function (res) {
        var data = res.data;
        console.log(data)
      },
      fail: function (res) {
        console.log(".....fail.....");
      }
    })
  },
  • 设置本地测试时,不验证https和域名,这样才能先在本地测试(设置——项目设置)。


二、后台JAVA配置

  • 这里使用的是struts2框架,myeclipse 2017
  • 需要配置fastjson(阿里json包),sqljdbc4(SQLSERVER JDBC包) ,struts Action映射,tomcat 数据连接池。
  • 测试完成。
  1. 创建一个web项目,直接在项目中右键加入struts框架。


2.网上下载fastjson,sqljdbc4包,导入项目中。

3.新建一个包与类,最后形成如下目录,名字自取。


4.配置Action映射,将方法映射成可以访问的servlet,需要操作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="wx_*" class="com.rx.action.HelloWorld" method="{1}">
			<result name="success" type="json">
                     <param name="root">data</param>
            </result>
		</action>
	</package>
</struts>    
<package>里就是配置,这里直接配置的json数据作为返回对象,和小程序交流你也用不到界面。继承struts-default,json-default

<action>中 name就是外部链接地址的访问对象: http://localhost:8080/项目名/wx_方法名,这里用了映射,wx_加上方法名就可以直接访问指定的方法。配置这一条就够用了。

<action>中 class指定包;

<result>内部如上就行了,data是参数名。

5.配置tomcat数据连接池。

  • 打开项目空间内,tomcat服务配置。

  • 配置context.xml,尾行前加入

 <Resource 
	name="jdbc/DBNAME" 
	auth="Container" 
	type="javax.sql.DataSource" 
	driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
	url="jdbc:sqlserver://localhost:1533;DatabaseName=DBNAME" 
	username="sa" 
	password="123456" 
	maxActive="10" 
	maxIdle="5"/>
  • 配置web.xml

<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/DBNAME(与context中name相对应)</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
  • 编写后台文件HelloWord

	public String data="";  //返回参数data,与context中配置名相同
	
	@Override
	public String execute () throws Exception{
			System.out.println("正在执行Action!");
			return SUCCESS;
	}
	
	
	public String getDB() throws SQLException{
		 Connection dbConn=null;
		 String username="";
		 try {
			      HttpServletRequest request = ServletActionContext.getRequest();  //获取请求头
				 String phoneNum=(String)request.getParameter("phoneNum");   //获取参数phoneNum与微信前台传入参数
          System.out.println("获取参数手机号:"+phoneNum);
         Context ctx=new InitialContext();
				 DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/DNAME");
				 dbConn=ds.getConnection();
                                 //以上获取context中配置的数据库连接
           System.out.println("成功连接数据库");
           String sql="select * from app_user where sjh= ?";
				 PreparedStatement pstmt = dbConn.prepareStatement(sql);
				 pstmt.setString(1, phoneNum);
				 ResultSet rs =  pstmt.executeQuery();
				 while(rs.next()){
					 username=rs.getString("yhm");
				 }
                                 //以上根据手机号获取姓名 (JDBC)
               } catch (Exception e) {

		 e.printStackTrace();

		 }finally{
			 dbConn.close();
		 }

		 JSONObject obj=new JSONObject(); 
		 obj.put("name", username);
		 data=obj.toString();
               //以上将值赋予data,返回成功。
                return SUCCESS;
	}
	
6.测试

前台成功根据手机号读出用户名:

后台成功获取参数,并连接数据库

7.总结

主要就是配置了servlet和数据库连接池,还有针对小程序的一些特殊点;

如果是自己本来就做java web项目,这种后台估计都不用配了。这部分内容对于前端比较陌生,所以这里写一下。

如有错误和改进,请提出,谢了。

程序之家二维码

小额赞赏

000
评论