您的位置:首页 > 编程语言 > Java开发

使用Struts2框架搭建Android服务器,模拟用户登录

2017-08-08 23:16 363 查看

——热爱开源,乐于分享

使用Struts2框架搭建Android服务器,模拟用户登录

一、Struts2框架的配置

步骤:

1.到Struts官网下载框架开发包,并将所必需的jar包导入Myeclipse中:



2.配置struts.xml,如果没有就新建一个,注意其位置,完整代码如下:



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<struts>

<!-- 声明包-->
<package name="myPackage" extends="struts-default">
<!-- 定义action-->
<action name="first">

<!-- 定义处理成功后的映射页面-->
<result>/first.jsp</result>
</action>

<action name="second">

<result>/second.jsp</result>
</action>

<action name="login" class="com.imooc.action.UserAction" method="login"></action>

</package>
</struts>


3.配置web.xml:



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- struts2过滤器,用于拦截规律http请求 -->
<filter>
<!-- 过滤器名称-->
<filter-name>struts2</filter-name>
<!-- 过滤器类,固定的,必须使用这个类-->
<!-- 解决用什么拦截过滤的问题!!!!!!!!!!!!!!!!!!!!!!!-->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<!-- struts2过滤器映射 -->
<filter-mapping>
<!-- 过滤器名称-->
<filter-name>struts2</filter-name>
<!-- 过滤器映射-->
<!-- 解决拦截过滤什么东西的问题!!!!!!!!!!!!!!!!!!!!!!!-->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


到这里,Struts2框架的配置就完成了!!!很简单,都是最基本额配置,注释也写得很清楚了。

二、服务器类的编写

思路:使用Struts2框架最主要的是编写Action类,这里直接编写一个判断客户端发来网络请求并携带的参数,根据Struts2框架action参数注入的方法,获取用户名和密码,然后判断,最后向客户端输出string字符串,类名为:UserAction

package com.imooc.action;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
private String username;
private String password;

public String login() throws IOException{

System.out.println(username+","+password);

HttpServletResponse response=ServletActionContext.getResponse();
PrintWriter write=response.getWriter();

if(username.equals("cuiyang")&&password.equals("123456")){
write.write("login success!");//向客户端写入数据
write.flush();
}else{
write.write("your username or pass is error!");
write.flush();
}
return null;
}

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}


在浏览器中输入地址并传递参数到服务器:http://localhost:8080/1/login?username=cuiyang&password=123456,可以看到返回的”login success!”字符串,并在服务器控制台看到传递过去的参数:





到此,使用Struts2框架用来验证用户登录的服务器搭建完成!

三、Android客户端

还是使用OkHttp网络请求框架,主要就是较上一篇博客(http://blog.csdn.net/weixin_37921492/article/details/76902740)里面的代码更改一下URL地址就行了,改成http://localhost:8080/1/login?username=cuiyang&password=123456就行了。

package com.example.administrator.okhttp_test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;

import com.squareup.okhttp.Call;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;

import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button get_btn;
private TextView tv;
private ScrollView sv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

get_btn= (Button) findViewById(R.id.get_btn);
tv= (TextView) findViewById(R.id.tv);
sv= (ScrollView) findViewById(R.id.sv);

get_btn.setOnClickListener(this);
}

@Override
public void onClick(View view) {

//1.得到okHttpClient对象,这是一个全局变量,大部分操作都在这里面
OkHttpClient okHttpClient=new OkHttpClient();
//2.封装request请求,GET请求
Request.Builder builder=new Request.Builder();
Request request=builder.get().url("http://192.168.0.104:8080/1/login?username=cuiyang&password=123456").build();
//3.将request加入Call这个,执行request请求
Call call= okHttpClient.newCall(request);
//4.将请求加入请求队列,即为异步,既然Call,就回调一个Callback
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {

}

@Override
public void onResponse(Response response) throws IOException {

final String str=response.body().string();

//因为这个还是在子线程,所以要开启UI线程中,进行UI更新
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(str);

}
});
}
});

}
}


效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: