当前位置:编程学习 > 网站相关 >>

使用struts2制作做webservice

昨天去青软那边,认识到自己的不足,只做Android是不行的.前几天公司也让做服务器.于是今天开始拿起javaEE 以后还是好好做JavaEE+Android吧

看了一下黎老师的WebService,还是很典型的应用(黎老师的课程确实很棒啊!受益一生),可惜的是他用的struts做的 也是今天中午移植到struts2 也算是练手+重温了.


进正题>

做Struts2 首先是配置工程 这个很烦人,和Android比差的很远.

首先是

web.xml没什么好说的其实就是配置struts2

[html] <?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5"  
    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_2_5.xsd"> 
  <display-name></display-name>  
  <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list> 
   
  <filter> 
    <!-- 定义核心Filter的名称 --> 
    <filter-name>struts2</filter-name> 
    <!--定义核心Filter的实现类 --> 
    <filter-class> 
        org.apache.struts2.dispatcher.FilterDispatcher 
    </filter-class> 
</filter> 
 
<filter-mapping> 
    <!--核心Filter的名称 --> 
    <filter-name>struts2</filter-name> 
    <!--使用该核心Filter来接受所有的Web请求 --> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
</web-app> 


struts.xml相当于Android中的AndroidManifest.xm

l 就一个action,返回两个结果,json和xml 貌似Android中现在很流行json的WebService

[html]
<?xml version="1.0" encoding="UTF-8" ?> 
 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
 
<struts> 
    <package name="struts2" extends="struts-default"> 
        <action name="List" class="com.su.action.VideoListAction"> 
            <result name="xml">/videos.jsp</result> 
            <result name="json">/jsonvideos.jsp</result> 
        </action> 
    </package> 
</struts> 

然后就是结果返回页面,先看xml的:跳转到videos.jsp 注意这里有一个struts的迭代器 可以把获取的videos处理后输出

[html]
<%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags"%><?xml version="1.0" encoding="UTF-8"?> 
<videos>  
<s:iterator value="#request.videos" id="video"> 
    <video id="<s:property value="#video.id"/>"> 
    <title><s:property value="#video.title"/></title> 
    <timelength><s:property value="#video.time"/></timelength> 
    </video> 
    </s:iterator>  
</videos> 

如果返回的是json那么是jsonviedos.jsp
[html]
<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>${videos} 

需要注意!xml文件中
<%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags"%><?xml version="1.0" encoding="UTF-8"?>

这里尖括号直接不要有空格不然在chrome里不能识别为xml文件 我想在解析的时候会报错(什么没有文件头什么的吧)


然后是java代码部分了


首先是VideoListAction.java也就是主action 相当于activity了


[java]
package com.su.action; 
 
import java.io.OutputStream; 
import java.io.PrintWriter; 
import java.util.List; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.struts2.ServletActionContext; 
 
import com.opensymphony.xwork2.ActionContext; 
import com.opensymphony.xwork2.ActionSupport; 
import com.su.domain.Video; 
import com.su.service.VideoService; 
import com.su.service.impl.VideoServiceBean; 
 
public class VideoListAction extends ActionSupport { 
    private VideoService service = new VideoServiceBean(); 
    private String format; 
    public String getFormat() { 
        return format; 
    } 
    public void setFormat(String format) { 
        this.format = format; 
    } 
     
    @Override 
    public String execute() throws Exception { 
        List<Video> videos = service.getLastVideos(); 
        if (format.equals("json")) { 
            StringBuilder json = new StringBuilder(); 
            json.append('['); 
            for(Video video : videos){ // {id:76,title:"xxxx",timelength:80} 
                json.append('{'); 
                json.append("id:").append(video.getId()).append(','); 
                json.append("title:\"").append(video.getTitle()).append("\","); 
                json.append("timelength:").append(video.getTime()); 
                json.append('}').append(','); 
            } 
            json.deleteCharAt(json.length()-1); 
     

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,