使用Struts2时为Android端提供数据
---ONE Goal,ONE Passion !
勉励自己:
不想过别人安排的命运,只能自己足够强大!趁年轻,不要辜负了曾经的耳语;趁年轻,不要辜负了等待自己的远方;趁年轻,不要辜负了陪着我的她;趁年轻,不要辜负了那份初心! ———勿忘初心!
1. 使用简单的servlet为我们的客户端返回数据.
第一步:编写我们的servlet
public class ServletForAndroid extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String str = "{name:'ltxx',age:'20'}";
response.getWriter().write(str);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
第二步:在web.xml中配置我们的servlet
<!-- 配置servlet -->
<servlet>
<servlet-name>ServletForAndroid</servlet-name>
<servlet-class>zz.itcast.servlet.ServletForAndroid</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletForAndroid</servlet-name>
<url-pattern>/ServletForAndroid</url-pattern>
</servlet-mapping>
第三步:直接去访问我们的servlet就行了
2.使用Struts2时为我们的客户端返回数据.
第一步:配置使用Struts2的相关jar包
第二步:在web.xml中配置核心过滤器
web.xml中
<!-- 配置struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第三步:编写我们的action
public class ActionForAndroid extends ActionSupport {
private HttpServletResponse response;
@Override
public String execute() throws Exception {
return super.execute();
}
// 方法中的response 对象不可以使用setServletResponse(HttpServletResponse response)中的对象,因为执行getJson时,setServletXXXX方法还没有执行
public void getJson() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
String str = "{name:'ltxx',age:'20'}";
response.getWriter().write(str);
}
/*public void setServletRequest(HttpServletRequest arg0) {
}
public void setServletResponse(HttpServletResponse response) {
System.out.println("--设置response--");
this.response = response;
}*/
}
注意:
getJson()方法中的response对象不可以使用setServletResponse(HttpServletResponse response)中的对象,因为执行getJson时,setServletXXXX方法还没有执行.
第四步:将action配置到Struts.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.ui.theme" value="simple"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<!-- Add packages here -->
<package name="android" extends="json-default">
<!-- <result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult" />
</result-types> -->
<action name="android" class="action.ActionForAndroid"
method="getJson">
<result type="json"></result>
</action>
</package>
</struts>
特别注意:
如果想直接返回json字符串.那么
- result必须返回的是json.
如果返回json必须重新做一下配置:
- 1.让我们的package继承至json-default
<package name="android" extends="json-default">
- 2.或者在package中声明result-types.
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult" />
</result-types>
预警:千万不要忘记导入一个jar包
struts2-json-plugin-2.3.15.3.jar
第五步:可以访问了啊!
{name:'ltxx',age:'20'}
Fighting…