问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样在myecplise8开发webservice 简单实例

发布网友 发布时间:2022-04-09 02:12

我来回答

2个回答

懂视网 时间:2022-04-09 06:33

接了个简单的毕业设计。需要WebService实现前台显示后台数据库存储,本人菜鸟,想了下,决定服务端存放有数据库连接的方法,客户端调用服务端提供的方法,实现与数据库的连接。

一、准备工作:

1.下载AXIS2框架

这里使用的版本是axis2-1.7.2,下载地址:http://axis.apache.org/axis2/java/core/download.cgi官网。 

(1)Binary distribution axis2-1.7.2-bin.zip

(2)WAR distribution axis2-1.7.2-war.zip

解压 axis2-1.4.1-war.zip 将 axis2.war 放到%TOME_HOME%webapps中.启动Tomcate. IE地址输入:http://localhost:<port>/axis2/

技术分享

显示欢迎界面,说明AXIS2配置成功。

2.集成AXIS2框架

接下来在Myeclipse上集成AXIS2框架,下载地址:http://axis.apache.org/axis2/java/core/tools/index.html

两个文件,

(1)Service Archive Wizard - Eclipse Plug-in

(2)Code Generator Wizard - Eclipse Plug-in

2:配置环境: 2.1:配置java环境变量(不赘述)。 

3.安装插件:解压axis2-eclipse-codegen-plugin-1.zip和axis2-eclipse-service-plugin-.zip,把得到的两个jar包放入eclipse目录下的plugins中,重启eclipse。

技术分享

安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other 如果安装正确你会看到

技术分享

3.配置tomcat

解压,配置环境变量Window->Perferences->Server->tomcat下添加。(不赘述)。
由此,配置工作结束。

注意:建议JDK使用1.6及以下,这里我使用的是1.6

二、编写服务端

接下来,在Myeclipse中创建两个web项目,并将axis2-1.7.2-bin.zip文件解压,配置axis2home环境变量(自行百度),并将axis2-1.7.2——lib下所有jar包拷贝道Server下的lib中,如图

技术分享

首先来写服务端,此处已登录为例;首先是将mysql-connector-java-3.0.16-ga-bin数据库连接jar包拷贝到lib文件夹下,

1.编写连接数据库的ConnectionManager文件

package com.book.basic;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionManager {
 public static Connection conn=null;
 public static ResultSet rs=null;
 public static PreparedStatement pstmt=null;
 public static PreparedStatement pstmt2=null;
 /**
 * @return
 */
  public static Connection getConnection(){
 	 try { 
 		 Context ct=new InitialContext(); 
 		 DataSource ds=(DataSource) ct.lookup("java:comp/env/jdbc/webbook"); 
 		 conn=ds.getConnection();
 	 } catch (SQLException e) {
 	 e.printStackTrace(); 
 	 }catch (NamingException e) {
 	 e.printStackTrace();
 	 }
 	 return conn;
  }
		public static void closeAll(){
			try{
				if(conn!=null){
					conn.close();
				}
				if(pstmt!=null){
					pstmt.close();
					
				}
				if(rs!=null){
					rs.close();
				}
			}catch(SQLException e){
				e.printStackTrace();
			}		
		}
	

}<span style="font-family:Microsoft YaHei;font-size:18px;">
</span>

在WebRoot目录下创建context.xml:

有图:技术分享

<?xml version='1.0' encoding='utf-8'?>
<!-- The contents of this file will be loaded for each web application -->
<Context>
<Resource
	name="jdbc/webbook" auth="Container" type="javax.sql.DataSource"
	maxAction="100" maxIdle="30" maxWait="10000"
 username="root" password="123456"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://localhost:3306/webbook?characterEncoding=UTF-8"
	/>

</Context>
然后是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>
 <servlet> 
 <servlet-name>Axis2Servlet</servlet-name> 
 <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> 
 <load-on-startup>1</load-on-startup> 
 </servlet> 
 
 <servlet-mapping> 
 <servlet-name>Axis2Servlet</servlet-name> 
 <url-pattern>*.jws</url-pattern> 
 </servlet-mapping> 
 
 <servlet-mapping> 
 <servlet-name>Axis2Servlet</servlet-name> 
 <url-pattern>/services/*</url-pattern> 
 </servlet-mapping> 
</web-app><span style="font-family:Microsoft YaHei;font-size:18px;">
</span>

同时要注意tomcat路径下,conf——context.xml不要忘记配置

技术分享

2.创建实体类User

技术分享
代码如下:

package com.book.entity;

public class User {
	private int id;
	private String name;
	private String psw;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPsw() {
		return psw;
	}
	public void setPsw(String psw) {
		this.psw = psw;
	}
}<span style="font-family:Microsoft YaHei;font-size:18px;">
</span>

请参照此代码,自行创建对应数据库webbbook下的user表。


3.编写数据库访问类UserService

package com.book.service;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.book.basic.ConnectionManager;
import com.book.entity.User;

public class UserService extends ConnectionManager{
	public int chkUser(String name, String psw) {
		int n=0;
		conn=getConnection();
		String sql="select * from user where name=? and psw=?";
		
		try {
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1,name);
			pstmt.setString(2,psw);
			rs=pstmt.executeQuery();
			if(rs.next()){
				n=1;
			}else{
				n=0;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return n;
	}	
	
}

4.发布UserService

对此文件进行发布,UserService上右键new——other——axis——axis2 service archier

技术分享
找到WorkSpace下当前项目的wWEB-INF下classess

技术分享

技术分享

添加mysql的jar包

技术分享

技术分享

选择输出位置tomcat下webapps——axis2——WEB-INF——services

技术分享

发布完毕,不熟Server项目,启动tomcat,输入:localhost:8080/axis2检查是否成功。

成功显示axis2的欢迎界面,点击services,点击UserService

技术分享

显示:

技术分享

复制浏览器地址。服务端编写完毕。

三、编写客户端Client

1.手动生成服务端发布的文件

开始编写客户端Client。由于使用myeclipse插件总是报错,没有解决,所以使用cmd命令手动生成。

首先,确保配置好了AXIS2_HOME。然后运行cmd(最好用管理员),我在D盘下有个demo文件夹, 为了避免找不到生成到哪了,所以就进入这个文件夹在生成。

技术分享

接下来,把生成的文件,src下面的整个拷贝到项目中,如图,

技术分享

如果有错误,请把Server的lib下的jar包都拷过来就ok了。

2.编写客户端调用服务器方法的类LoginServlet

然后,写客户端调用服务器方法的类。

创建LoginServlet在com.book.servlet文件夹下。

技术分享

修改Web.xml下自动生成的配置如图:

<servlet>
 <description>This is the description of my J2EE component</description>
 <display-name>This is the display name of my J2EE component</display-name>
 <servlet-name>LoginServlet</servlet-name>
 <servlet-class>com.book.servlet.LoginServlet</servlet-class>
 </servlet>

 <servlet-mapping>
 <servlet-name>LoginServlet</servlet-name>
 <url-pattern>/LoginServlet</url-pattern>
 </servlet-mapping>	

然后编写LoginServlet

package com.book.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.book.service.UserServiceStub;
import com.book.service.UserServiceStub.ChkUserResponse;

public class LoginServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public LoginServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("GBK");
		response.setCharacterEncoding("GBK");
		String name =request.getParameter("username");
		String psw =request.getParameter("password");
		String target = "http://localhost:8080/axis2/services/UserService";
		UserServiceStub stub = new UserServiceStub(target);
		UserServiceStub.ChkUser chku = new UserServiceStub.ChkUser();
		chku.setName(name);
		chku.setPsw(psw);
		UserServiceStub.ChkUserResponse chkur = stub.chkUser(chku);
		int n=chkur.get_return();		
		if(n>0){		
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}else{
			request.getRequestDispatcher("error.jsp").forward(request, response);
		}		
	}	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			doGet(request,response);
		} catch (IOException e) {
		
			e.printStackTrace();
		}
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

前台页面就不写了,文章最后给出项目下载地址。

3.测试

部署Client,启动服务器,输入:http://localhost:8080/Client/Login.html

技术分享技术分享

跳转到首页,登陆成功!

真的是好久不碰WebService都忘干净了,这次的项目确实是个挑战,每天遇到很多问题,一部分能就解决就解决问题,不能就得绕过这个问题。虽然看起来就是这么简单的技术,但是身为菜鸟,每次通过各种途径解决总是很开心的,直到最终项目成功交付。

如有问题可以参考:

1.http://wenku.baidu.com/link?url=tL2GL5oyrIvN6B47nkou6KPtXRSHkm9Q67t1kq7SWVYN8t5GzjoiG_apPxV7JC_BCGulsV85xpI1KbxJF6vRmDjUpB04fEubO5WDrTL2Pz3

2.http://www.blogjava.net/tianchijiaozi/archive/2013/03/15/396452.html


AXIS2+Myeclipse实现WebService数据库存储简单实例

标签:

热心网友 时间:2022-04-09 03:41

1.1.系统功能:

开发一个计算器服务CalculateService,这个服务包含加(plus)、减(minus)、乘(multiply)、除(divide)的操作。

1.2.开发前准备:

安装Eclipse-jee;

下载最新版本的Axis2,网址http://axis.apache.org/axis2/java/core/download.cgi
,选择Standard Binary Distribution的zip包,解压缩得到的目录名axis2-1.4.1,目录内的文件结构如下:

1.3.开发前配置:

在Eclipse的菜单栏中,Window --> Preferences --> Web Service -->
Axis2 Perferences,在Axis2 runtime
location中选择Axis2解压缩包的位置,设置好后,点"OK"即行。(如图)

1.4.开发Web Service:

(1)新建一个Java Project,命名为"WebServiceTest1"
(2)新建一个class,命名为"CalculateService",完整代码如下:

package e.sjtu.webservice;
/**
* 计算器运算
* @author rongxinhua
*/
public class CalculateService {
//加法
public float plus(float x, float y) {
return x + y;
}
//减法
public float minus(float x, float y) {
return x - y;
}
//乘法
public float multiply(float x, float y) {
return x * y;
}
//除法
public float divide(float x, float y) {
if(y!=0)
{
return x / y;
}
else
return -1;
}
}

(3)在"WebServiceTest1"项目上new --> other,找到"Web Services"下面的"Web Service";

(4)下一步(next),在出现的Web Services对象框,在Service
implementation中点击"Browse",进入Browse
Classes对象框,查找到我们刚才写的写的CalculateService类。(如下图)。点击"ok",则回到Web Service话框。

(5)在Web Service对话框中,将Web Service type中的滑块,调到"start service“的位置,将Client type中的滑块调到"Test client"的位置。

(6)在Web Service
type滑块图的右边有个"Configuration",点击它下面的选项,进入Service Deployment
Configuration对象框,在这里选择相应的Server(我这里用Tomcat6.0)和Web
Service runtime(选择Apache Axis2),如下图:

(7)点OK后,则返回到Web Service对话框,同理,Client
type中的滑块右边也有"Configuration",也要进行相应的置,步骤同上。完成后,Next -->
next即行。进入到Axis2 Web Service Java Bean Configuration,我们选择Generate a
default services.xml,如下图所示:

(8)到了Server startup对话框,有个按键"start server"(如下图),点击它,则可启动Tomcat服务器了。

(9)等启完后,点击"next -- > next",一切默认即行,最后,点击完成。最后,出现如下界面:(Web Service
Explorer),我们在这里便可测试我们的Web服务。(使用浏览器打开的话使用如下地址:http://127.0.0.1:19189/wse
/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=3)。如下图所示:

注:在浏览器中打开Web Service Explorer(有时候在eclipse中关闭了webservice explorer,可以用这种方法打开)
首先登录地址:http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp。然后在网页右上角选择
Web Service
Exoplorer标签。然后输入WSDL地址:http://localhost:8080/WebServiceTest1/services
/CalculateService?wsdl 。这个wsdl地址就是我们刚才发布服务的那个wsdl。点击go,如下图所示:

然后就可以看到如下界面了:

(10)测试比较简单,例如,我们选择一个"plus"的Operation(必须是
CalculateServiceSoap11Binding),出现下图,在x的输入框中输入1,在y的输入框中输入2,点击"go",便会在
status栏中显示结果3.0。其他方法的测试也类似。结果如上图所示。

1.5.CalculateService客户端调用程序

前面我们已经定义好了加减乘除的方法并将这些方法发布为服务,那么现在要做的就是调用这些服务即可。客户端调用程序如下代码所示:CalculateServiceTest.java

package e.sjtu.webservice.test;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class CalculateServiceTest {
/**
* @param args
* @throws AxisFault
*/
public static void main(String[] args) throws AxisFault {
// TODO Auto-generated method stub
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/WebServiceTest1/services/CalculateService");
options.setTo(targetEPR);
// 指定要调用的计算机器中的方法及WSDL文件的命名空间:e.sjtu.webservice。
QName opAddEntry = new QName("http://webservice.sjtu.e","plus");//加法
QName opAddEntryminus = new QName("http://webservice.sjtu.e","minus");//减法
QName opAddEntrymultiply = new QName("http://webservice.sjtu.e","multiply");//乘法
QName opAddEntrydivide = new QName("http://webservice.sjtu.e","divide");//除法
// 指定plus方法的参数值为两个,分别是加数和被加数
Object[] opAddEntryArgs = new Object[] { 1,2 };
// 指定plus方法返回值的数据类型的Class对象
Class[] classes = new Class[] { float.class };
// 调用plus方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);
System.out.println(serviceClient.invokeBlocking(opAddEntryminus,opAddEntryArgs, classes)[0]);
System.out.println(serviceClient.invokeBlocking(opAddEntrymultiply,opAddEntryArgs, classes)[0]);
System.out.println(serviceClient.invokeBlocking(opAddEntrydivide,opAddEntryArgs, classes)[0]);
}
}

运行结果:

3.0
-1.0
2.0
0.5

2.实例

2.HelloService

(1)首先定义服务方法,代码如下所示:

package e.sjtu.webservice;
public class HelloService {
public String sayHelloNew() {
return "hello";
}
public String sayHelloToPersonNew(String name) {
if (name == null) {
name = "nobody";
}
return "hello," + name;
}
public void updateData(String data) {
System.out.println(data + " 已更新。");
}
}

(2)参考实例1将这个方法发布为服务。

(3)编写客户端代码调用WebService(主要参考[5])

本文例子与其他例子最大的不同就在这里,其他例子一般需要根据刚才的服务wsdl生成客户端stub,然后通过stub来调用服务,这种方式显得比
较单一,客户端必须需要stub存根才能够访问服务,很不方面。本例子的客户端不采用stub方式,而是一种实现通用的调用方式,不需要任何客户端存根即
可访问服务。只需要指定对于的web servce地址、操作名、参数和函数返回类型即可。代码如下所示:

HelloServiceTest2.java
package e.sjtu.webservice.test;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class HelloServiceTest2 {
private RPCServiceClient serviceClient;
private Options options;
private EndpointReference targetEPR;
public HelloServiceTest2(String endpoint) throws AxisFault {
serviceClient = new RPCServiceClient();
options = serviceClient.getOptions();
targetEPR = new EndpointReference(endpoint);
options.setTo(targetEPR);
}
public Object[] invokeOp(String targetNamespace, String opName,
Object[] opArgs, Class<?>[] opReturnType) throws AxisFault,
ClassNotFoundException {
// 设定操作的名称
QName opQName = new QName(targetNamespace, opName);
// 设定返回值
// Class<?>[] opReturn = new Class[] { opReturnType };
// 操作需要传入的参数已经在参数中给定,这里直接传入方法中调用
return serviceClient.invokeBlocking(opQName, opArgs, opReturnType);
}
/**
* @param args
* @throws AxisFault
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws AxisFault,
ClassNotFoundException {
// TODO Auto-generated method stub
final String endPointReference = "http://localhost:8080/WebServiceTest1/services/HelloService";
final String targetNamespace = "http://webservice.sjtu.e";
HelloServiceTest2 client = new HelloServiceTest2(endPointReference);
String opName = "sayHelloToPersonNew";
Object[] opArgs = new Object[] { "My Friends" };
Class<?>[] opReturnType = new Class[] { String[].class };
Object[] response = client.invokeOp(targetNamespace, opName, opArgs,
opReturnType);
System.out.println(((String[]) response[0])[0]);
}
}

运行该程序,点击Run As->Java application,可以看到控制台端口的输出是:Hello, My
Friends,表明客户端调用成功。该例子最大的不同和优势表现在客户端的调用方式,或者说是发起服务调用的方式,虽然比起客户端stub存根的方式,
代码稍多,但是这种方式统一,不需要生产stub存根代码,解决了客户端有很多类的问题。如果读者对这些代码进一步封装,我想调用方式很简单,只需要传递
相关参数,这更好地说明了服务调用的优势。而且这种方式更加简单明了,一看便知具体含义。而不需要弄得stub类的一些机制。

(4)改写客户端调用服务的代码

(3)中提到的客户端应用代码写的略微有些繁杂,下面将上面的客户端调用service程序进行改写,简洁了许多。代码如下:

HelloServiceTest.java
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class HelloServiceTest {
public static void main(String args[]) throws AxisFault {
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/WebServiceTest1/services/HelloService");
options.setTo(targetEPR);
// 指定要调用的sayHelloToPerson方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://webservice.sjtu.e","sayHelloToPersonNew");
// 指定sayHelloToPerson方法的参数值
Object[] opAddEntryArgs = new Object[] { "xuwei" };
// 指定sayHelloToPerson方法返回值的数据类型的Class对象
Class[] classes = new Class[] { String.class };
// 调用sayHelloToPerson方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
当孩子面对挑战时,我们如何鼓励他们积极面对? 如何帮助孩子走出挫折 当孩子遇到困难时应该怎么引导? 如何帮助孩子克服学习上的困难和挑战? 孩子遇到挫败感时,家长应该如何鼓励孩子? 怎么提升孩子在成长过程中应对困难的能力? 天津市老年人优待证 四个超级有效的男性强根壮阳之术 星期天早上问候语 炒饭烩饭128道 内容提要 2019小型微利企业资产总额可以用净资产计算吗?因为其中其他应收款的科目余额是负数? 小型微利企业资产总额、从业人员如何计算? 小型微利企业资产总额怎么算 该企业是其他企业 小型微利企业资产总额和从业人员标准各是多少? 小型微利企业资产总额是指什么 怀孕一个月该吃什么补充营养 刚怀孕一个多月应该吃什么才有营养 中国银行信用卡 在微信上查已经通过审核 卡片状态已制卡邮寄中。但是打客服没有邮寄编号 这是什么情 中国银行的信用卡是在哪里制卡的? 中国银行信用卡申请两个多月了,都是审核中,怎么回事。 刚在网上查到中国银行信用卡在制卡中,用行驶证申请的鲁通ETC信用卡,这种卡的最低额度是多少?? 中国银行信用卡审核通过已制卡邮寄中要多久才收到 中行信用卡20000额度制卡中是不是就稳了? 中行信用卡进度查询说制卡中 打客服询问说账户建立待制卡 到底哪个准? 中国银行信用卡从微信公众号查询已核准,制卡中,打电话客服也告诉了我额度,是不是表示已经批了? 华为手机怎样拔一个数字键就显示整个号码? 拼多多上和其他人拼单真的能买到低于标价的东西吗?还是说这只是个噱头? 网上申请中国银行的信用卡,查询结果已制卡邮寄中,是什么意思 华为手机通讯录怎样显示全部联系人? 拼多多拼单真的假的 女的第一次太紧张怎么办 女生,第一次好紧张怎么办 第一次好紧张,怎么办!!!急 和女友第一次 她很紧怎么办 第一次性生活紧张怎么办? 女生第一次特紧张怎么办 第一次紧张 怎么办 男人第一次的时候紧张没办法正常勃起,怎么办?有什么好的办法吗? 女孩第一次很紧,要怎么弄才更容易进去? 猫咪挤一挤游戏在哪玩 我第一次做,很紧张,怎么办 第一次怕痛不自觉紧缩怎么办 第一次紧张怎么办 第一次太紧张,怎么办 第一次好紧张,怎么办 抖音上说的欢乐豆是什么? 第一次女孩紧张怎么办 处男第一次紧张怎么办? 处男第一次很紧张。。怎么办 保护耳朵,吃一些什么东西好呢?