- 浏览: 172490 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
gwill_21:
dwr.xml找不到怎么办,难道要自己手写dwr.xml?痛苦 ...
DWR框架 —— 用户注册验证 -
recoba7:
MLDN魔乐科技 Oracle学习笔记 (5) -
lanni2460:
呵呵 尽管现在才看到这个 但是我真的觉得 李老师 讲的很好呢 ...
严重声明,那些恶意诋毁MLDN及李兴华老师的其他培训机构统统走开 -
chian_xxp:
只要把功能实现了,代码结构合理了,代码性能提高了,该注意的注意 ...
业务、业务、业务。。。 -
wzpbb:
密码多少啊??? 给一下啊
MLDN 魔乐科技 Oracle 学习笔记(2)
WebService:用来跨语言传递数据。
数据交互是通过XML来完成。
使用WebService开发一般为以下几种情况:
1) 政府或大型企业项目(要求保密性比较高的项目):为了防止后台数据泄露,由政府机构提供后台的接口,程序员开发前台项目内容,通过调用该接口中的方法来操作数据库。最早的WebService项目一般电信系统的项目。
2) 子公司与母公司项目:只使用一套后台代码,使用多套前台代码来调用后台代码的方法。
3) 两个公司合作开发:一个公司编写前台界面,用来显示数据,另一个公司编写后台DAO部分代码,用来查询数据库。
分布式开发:建立多个项目(区分前后台项目),各个项目同时开始开发,前后台项目通过一个或多个接口进行沟通。理论上开发效率会比普通的项目要高,但由于沟通问题,一般都会导致开发效率降低。
XFire:是WebService的一个实现框架,其他的类似AXIS等也是WebService的实现框架。
XFire是Java开发WebService最容易的一个框架,自带Spring框架核心支持包,支持与Spring + Hibernate联合开发。
开发一个简单的WebService程序,使用MyEclipse开发工具,由于MyEclipse自带最新版本的XFire框架支持,因此不需要单独下载XFire的支持包。
1、建立项目
注意:不是Web项目了,改为WebService项目了
这里要配置发布的Web服务的默认路径,默认为services虚拟目录下。
services.xml(XFire核心配置文件),所有发布的服务都是通过该文件完成的。
加入jar包支持,注意开发服务器端时,不需要单独加入客户端支持jar包。
XFire 1.1jar包也不需要加入
2、加入Hibernate支持
3、生成映射
package org.mldn.lin.pojo;
public class Menu implements java.io.Serializable {
// Fields
private Integer id;
private String title;
private Integer upid;
private String url;
// Constructors
public Menu() {
}
public Menu(String title, Integer upid) {
this.title = title;
this.upid = upid;
}
public Menu(String title, Integer upid, String url) {
this.title = title;
this.upid = upid;
this.url = url;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getUpid() {
return this.upid;
}
public void setUpid(Integer upid) {
this.upid = upid;
}
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
}
4、建立数据库连接类
package org.mldn.dbc;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class DataBaseConnection {
private static DataBaseConnection instance=new DataBaseConnection();
private SessionFactory sf;
private Session session;
private DataBaseConnection(){
sf = new Configuration().configure().buildSessionFactory();
}
public static DataBaseConnection getInstance(){
return instance;
}
public Session getConnection(){
if(this.session==null || !this.session.isConnected()){
this.session=sf.openSession();
}
return this.session;
}
public void colse(){
if(this.session!=null){
this.session.close();
}
}
public void commit(){
if(this.session!=null){
this.session.beginTransaction().commit();
}
}
public void rollback(){
if(this.session!=null){
this.session.beginTransaction().rollback();
}
}
}
5、建立要发布的接口与实现类、代理类
package org.mldn.lin.dao;
import java.util.List;
import org.mldn.lin.pojo.Menu;
public interface MenuDAO {
public List<Menu> findAll(int cp,int ls,String keyword)throws Exception;
public int getAllCount(String keyword)throws Exception;
}
package org.mldn.lin.dao.impl;
import java.util.List;
import org.hibernate.Query;
import org.mldn.dbc.DataBaseConnection;
import org.mldn.lin.dao.MenuDAO;
import org.mldn.lin.pojo.Menu;
public class MenuDAOImpl implements MenuDAO {
private DataBaseConnection instance=DataBaseConnection.getInstance();
public List<Menu> findAll(int cp, int ls, String keyword) throws Exception {
// TODO Auto-generated method stub
String hql="FROM Menu WHERE title LIKE ?";
Query q=this.instance.getConnection().createQuery(hql);
q.setString(0, "%"+keyword+"%");
q.setFirstResult((cp-1)*ls);
q.setMaxResults(ls);
return q.list();
}
public int getAllCount(String keyword) throws Exception {
// TODO Auto-generated method stub
String hql="SELECT count(*) FROM Menu WHERE title LIKE ?";
Query q=this.instance.getConnection().createQuery(hql);
q.setString(0, "%"+keyword+"%");
List all =q.list();
if(all!=null && all.size()>0){
return (Integer)all.get(0);
}
return 0;
}
}
package org.mldn.lin.dao.proxy;
import java.util.List;
import org.mldn.dbc.DataBaseConnection;
import org.mldn.lin.dao.MenuDAO;
import org.mldn.lin.dao.impl.MenuDAOImpl;
import org.mldn.lin.pojo.Menu;
public class MenuDAOProxy implements MenuDAO{
private DataBaseConnection instance=DataBaseConnection.getInstance();
private MenuDAO menudao;
public MenuDAOProxy(){
this.menudao=new MenuDAOImpl();
}
public List<Menu> findAll(int cp, int ls, String keyword) throws Exception {
// TODO Auto-generated method stub
List all=null;
try {
all=this.menudao.findAll(cp, ls, keyword);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.instance.colse();
}
return all;
}
public int getAllCount(String keyword) throws Exception {
// TODO Auto-generated method stub
int count=0;
try {
count=this.menudao.getAllCount(keyword);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.instance.colse();
}
return count;
}
}
6、进行服务的发布
在src下 new Other
选择 MyEclipse Web Services WebService
选择要发布服务的项目,并使用JavaBean的形式发布服务
配置接口与实现类,设置发布的XML的样式及Servlet保存范围。
完成后会在services.xml中加入以下内容
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>FirstXFire</name>
<serviceClass>org.mldn.lin.dao.MenuDAO</serviceClass>
<implementationClass>
org.mldn.lin.dao.proxy.MenuDAOProxy
</implementationClass>
<style>rpc</style>
<use>literal</use>
<scope>session</scope>
</service></beans>
7、部署项目
注意这里必须使用MyEclipse自动部署,因为XFire的支持jar包加入方式不是直接拷贝到WEB-INF下的lib下的
8、测试
通过访问http://localhost:8080/XFireBackLinDemo/services/FirstXFire?wsdl可以查看到发布的Web服务
前台代码
1、建立项目
加入所有jar包
2、删除web.xml中的XFireServlet配置
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services
package org.mldn.lin.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.mldn.lin.pojo.Menu;
public class MenuForm extends ActionForm {
private String keyword="";
private int cp=1;
private int ls=5;
private String status;
private Menu menu=new Menu();
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public int getCp() {
return cp;
}
public void setCp(int cp) {
this.cp = cp;
}
public int getLs() {
return ls;
}
public void setLs(int ls) {
this.ls = ls;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Menu getMenu() {
return menu;
}
public void setMenu(Menu menu) {
this.menu = menu;
}
}
6、DAOFactory
package org.mldn.lin.factory;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class DAOFactory {
public static Object getInstance(Class clazz, String url) throws Exception {
Object obj = null;
Service srvcModel = new ObjectServiceFactory().create(clazz);
// 建立XFire工厂
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
obj = factory.create(srvcModel, url);
return obj;
}
}
7、编写Action
package org.mldn.lin.struts.action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.mldn.lin.dao.MenuDAO;
import org.mldn.lin.factory.DAOFactory;
import org.mldn.lin.pojo.Menu;
import org.mldn.lin.struts.form.MenuForm;
public class MenuAction extends DispatchAction {
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
MenuForm menuForm = (MenuForm) form;// TODO Auto-generated method stub
MenuDAO menudao=null;
Menu[] all=null;
int allRecorders=0;
int allPages=0;
List allPage=new ArrayList();
try {
menudao=(MenuDAO) DAOFactory.getInstance(MenuDAO.class, "http://localhost:8080/XFireBackLinDemo/services/FirstXFire");
all=menudao.findAll(menuForm.getCp(), menuForm.getLs(), menuForm.getKeyword());
allRecorders=menudao.getAllCount(menuForm.getKeyword());
allPages = (allRecorders - 1) / menuForm.getLs() + 1;
for (int i = 1; i <= allPages; i++) {
allPage.add(i);
}
request.setAttribute("cp", menuForm.getCp());
request.setAttribute("ls", menuForm.getLs());
request.setAttribute("keyword", menuForm.getKeyword());
request.setAttribute("all", all);
request.setAttribute("allRecorders", allRecorders);
request.setAttribute("allPages", allPages);
request.setAttribute("allPage", allPage);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mapping.findForward("list");
}
}
8、配置Action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="menuForm" type="org.mldn.lin.struts.form.MenuForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="menuForm"
input="/error.jsp"
name="menuForm"
parameter="status"
path="/menu"
scope="request"
type="org.mldn.lin.struts.action.MenuAction">
<forward name="list" path="/list.jsp" />
</action>
</action-mappings>
<message-resources parameter="org.mldn.lin.struts.ApplicationResources" />
</struts-config>
9、编写前台页面
<%@ page language="java" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<center>
<a href="menu.do?status=list">列表显示</a>
</center>
</body>
</html>
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<script type="text/javascript">
function changeCp(cp){
document.splitForm.cp.value = cp ;
// 提交表单
document.splitForm.submit() ;
}
function changeLs(ls){
document.splitForm.ls.value = ls ;
document.splitForm.cp.value =1;
document.splitForm.submit() ;
}
function changeKeyword(){
document.splitForm.cp.value =1;
document.splitForm.submit() ;
}
</script>
</head>
<body>
<center>
<table border="0">
<tr>
<td>编号</td>
<td>标题</td>
<td>UPID</td>
<td>url</td>
</tr>
<logic:present name="all" scope="request">
<logic:iterate id="tempt" name="all" scope="request">
<tr>
<td>${tempt.id }</td>
<td>${tempt.title }</td>
<td>${tempt.upid }</td>
<td>${tempt.url }</td>
</tr>
</logic:iterate>
</logic:present>
<tr>
<td colspan="4">
<form action="${pageContext.request.contextPath }/menu.do" method="post" id="splitForm" name="splitForm">
<input type="hidden" name="ls" value="${requestScope.ls }">
<input type="hidden" name="cp" value="${requestScope.cp }">
<input type="hidden" name="status" value="list">
<img src="${pageContext.request.contextPath }/images/img/Library-button-1.gif" width="50" height="20" border="0" onClick="changeCp(1);"/>
<img src="${pageContext.request.contextPath }/images/img/Library-button-2.gif" width="50" height="20" border="0" onClick="changeCp(${requestScope.cp==1?1:(requestScope.cp-1) });"/>
<img src="${pageContext.request.contextPath }/images/img/Library-button-4.gif" width="50" height="20" border="0" onClick="changeCp(${requestScope.cp==requestScope.allPages?requestScope.allPages:(requestScope.cp+1) });"/>
<img src="${pageContext.request.contextPath }/images/img/Library-button-5.gif" width="50" height="20" border="0" onClick="changeCp(${requestScope.allPages });"/>
共${requestScope.allRecorders }条 ${requestScope.allPages }页 第${requestScope.cp }页 跳转到第
<select name="mycp" onchange="changeCp(this.value)">
<logic:present name="allPage" scope="request">
<logic:iterate id="page1" name="allPage" scope="request">
<option value="${page1 }" ${page1==cp?"selected":""}>${page1 }</option>
</logic:iterate>
</logic:present>
</select>页 每页显示
<select name="myls" onchange="changeLs(this.value)">
<option value="2" ${requestScope.ls==2?"selected":"" }>2</option>
<option value="5" ${requestScope.ls==5?"selected":"" }>5</option>
<option value="10" ${requestScope.ls==10?"selected":"" }>10</option>
<option value="20" ${requestScope.ls==20?"selected":"" }>20</option>
</select>
</form>
</td>
</tr>
</table>
</center>
</body>
</html>
数据交互是通过XML来完成。
使用WebService开发一般为以下几种情况:
1) 政府或大型企业项目(要求保密性比较高的项目):为了防止后台数据泄露,由政府机构提供后台的接口,程序员开发前台项目内容,通过调用该接口中的方法来操作数据库。最早的WebService项目一般电信系统的项目。
2) 子公司与母公司项目:只使用一套后台代码,使用多套前台代码来调用后台代码的方法。
3) 两个公司合作开发:一个公司编写前台界面,用来显示数据,另一个公司编写后台DAO部分代码,用来查询数据库。
分布式开发:建立多个项目(区分前后台项目),各个项目同时开始开发,前后台项目通过一个或多个接口进行沟通。理论上开发效率会比普通的项目要高,但由于沟通问题,一般都会导致开发效率降低。
XFire:是WebService的一个实现框架,其他的类似AXIS等也是WebService的实现框架。
XFire是Java开发WebService最容易的一个框架,自带Spring框架核心支持包,支持与Spring + Hibernate联合开发。
开发一个简单的WebService程序,使用MyEclipse开发工具,由于MyEclipse自带最新版本的XFire框架支持,因此不需要单独下载XFire的支持包。
1、建立项目
注意:不是Web项目了,改为WebService项目了
这里要配置发布的Web服务的默认路径,默认为services虚拟目录下。
services.xml(XFire核心配置文件),所有发布的服务都是通过该文件完成的。
加入jar包支持,注意开发服务器端时,不需要单独加入客户端支持jar包。
XFire 1.1jar包也不需要加入
2、加入Hibernate支持
3、生成映射
package org.mldn.lin.pojo;
public class Menu implements java.io.Serializable {
// Fields
private Integer id;
private String title;
private Integer upid;
private String url;
// Constructors
public Menu() {
}
public Menu(String title, Integer upid) {
this.title = title;
this.upid = upid;
}
public Menu(String title, Integer upid, String url) {
this.title = title;
this.upid = upid;
this.url = url;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getUpid() {
return this.upid;
}
public void setUpid(Integer upid) {
this.upid = upid;
}
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
}
4、建立数据库连接类
package org.mldn.dbc;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class DataBaseConnection {
private static DataBaseConnection instance=new DataBaseConnection();
private SessionFactory sf;
private Session session;
private DataBaseConnection(){
sf = new Configuration().configure().buildSessionFactory();
}
public static DataBaseConnection getInstance(){
return instance;
}
public Session getConnection(){
if(this.session==null || !this.session.isConnected()){
this.session=sf.openSession();
}
return this.session;
}
public void colse(){
if(this.session!=null){
this.session.close();
}
}
public void commit(){
if(this.session!=null){
this.session.beginTransaction().commit();
}
}
public void rollback(){
if(this.session!=null){
this.session.beginTransaction().rollback();
}
}
}
5、建立要发布的接口与实现类、代理类
package org.mldn.lin.dao;
import java.util.List;
import org.mldn.lin.pojo.Menu;
public interface MenuDAO {
public List<Menu> findAll(int cp,int ls,String keyword)throws Exception;
public int getAllCount(String keyword)throws Exception;
}
package org.mldn.lin.dao.impl;
import java.util.List;
import org.hibernate.Query;
import org.mldn.dbc.DataBaseConnection;
import org.mldn.lin.dao.MenuDAO;
import org.mldn.lin.pojo.Menu;
public class MenuDAOImpl implements MenuDAO {
private DataBaseConnection instance=DataBaseConnection.getInstance();
public List<Menu> findAll(int cp, int ls, String keyword) throws Exception {
// TODO Auto-generated method stub
String hql="FROM Menu WHERE title LIKE ?";
Query q=this.instance.getConnection().createQuery(hql);
q.setString(0, "%"+keyword+"%");
q.setFirstResult((cp-1)*ls);
q.setMaxResults(ls);
return q.list();
}
public int getAllCount(String keyword) throws Exception {
// TODO Auto-generated method stub
String hql="SELECT count(*) FROM Menu WHERE title LIKE ?";
Query q=this.instance.getConnection().createQuery(hql);
q.setString(0, "%"+keyword+"%");
List all =q.list();
if(all!=null && all.size()>0){
return (Integer)all.get(0);
}
return 0;
}
}
package org.mldn.lin.dao.proxy;
import java.util.List;
import org.mldn.dbc.DataBaseConnection;
import org.mldn.lin.dao.MenuDAO;
import org.mldn.lin.dao.impl.MenuDAOImpl;
import org.mldn.lin.pojo.Menu;
public class MenuDAOProxy implements MenuDAO{
private DataBaseConnection instance=DataBaseConnection.getInstance();
private MenuDAO menudao;
public MenuDAOProxy(){
this.menudao=new MenuDAOImpl();
}
public List<Menu> findAll(int cp, int ls, String keyword) throws Exception {
// TODO Auto-generated method stub
List all=null;
try {
all=this.menudao.findAll(cp, ls, keyword);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.instance.colse();
}
return all;
}
public int getAllCount(String keyword) throws Exception {
// TODO Auto-generated method stub
int count=0;
try {
count=this.menudao.getAllCount(keyword);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.instance.colse();
}
return count;
}
}
6、进行服务的发布
在src下 new Other
选择 MyEclipse Web Services WebService
选择要发布服务的项目,并使用JavaBean的形式发布服务
配置接口与实现类,设置发布的XML的样式及Servlet保存范围。
完成后会在services.xml中加入以下内容
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>FirstXFire</name>
<serviceClass>org.mldn.lin.dao.MenuDAO</serviceClass>
<implementationClass>
org.mldn.lin.dao.proxy.MenuDAOProxy
</implementationClass>
<style>rpc</style>
<use>literal</use>
<scope>session</scope>
</service></beans>
7、部署项目
注意这里必须使用MyEclipse自动部署,因为XFire的支持jar包加入方式不是直接拷贝到WEB-INF下的lib下的
8、测试
通过访问http://localhost:8080/XFireBackLinDemo/services/FirstXFire?wsdl可以查看到发布的Web服务
前台代码
1、建立项目
加入所有jar包
2、删除web.xml中的XFireServlet配置
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services
package org.mldn.lin.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.mldn.lin.pojo.Menu;
public class MenuForm extends ActionForm {
private String keyword="";
private int cp=1;
private int ls=5;
private String status;
private Menu menu=new Menu();
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public int getCp() {
return cp;
}
public void setCp(int cp) {
this.cp = cp;
}
public int getLs() {
return ls;
}
public void setLs(int ls) {
this.ls = ls;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Menu getMenu() {
return menu;
}
public void setMenu(Menu menu) {
this.menu = menu;
}
}
6、DAOFactory
package org.mldn.lin.factory;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class DAOFactory {
public static Object getInstance(Class clazz, String url) throws Exception {
Object obj = null;
Service srvcModel = new ObjectServiceFactory().create(clazz);
// 建立XFire工厂
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
obj = factory.create(srvcModel, url);
return obj;
}
}
7、编写Action
package org.mldn.lin.struts.action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.mldn.lin.dao.MenuDAO;
import org.mldn.lin.factory.DAOFactory;
import org.mldn.lin.pojo.Menu;
import org.mldn.lin.struts.form.MenuForm;
public class MenuAction extends DispatchAction {
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
MenuForm menuForm = (MenuForm) form;// TODO Auto-generated method stub
MenuDAO menudao=null;
Menu[] all=null;
int allRecorders=0;
int allPages=0;
List allPage=new ArrayList();
try {
menudao=(MenuDAO) DAOFactory.getInstance(MenuDAO.class, "http://localhost:8080/XFireBackLinDemo/services/FirstXFire");
all=menudao.findAll(menuForm.getCp(), menuForm.getLs(), menuForm.getKeyword());
allRecorders=menudao.getAllCount(menuForm.getKeyword());
allPages = (allRecorders - 1) / menuForm.getLs() + 1;
for (int i = 1; i <= allPages; i++) {
allPage.add(i);
}
request.setAttribute("cp", menuForm.getCp());
request.setAttribute("ls", menuForm.getLs());
request.setAttribute("keyword", menuForm.getKeyword());
request.setAttribute("all", all);
request.setAttribute("allRecorders", allRecorders);
request.setAttribute("allPages", allPages);
request.setAttribute("allPage", allPage);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mapping.findForward("list");
}
}
8、配置Action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="menuForm" type="org.mldn.lin.struts.form.MenuForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="menuForm"
input="/error.jsp"
name="menuForm"
parameter="status"
path="/menu"
scope="request"
type="org.mldn.lin.struts.action.MenuAction">
<forward name="list" path="/list.jsp" />
</action>
</action-mappings>
<message-resources parameter="org.mldn.lin.struts.ApplicationResources" />
</struts-config>
9、编写前台页面
<%@ page language="java" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<center>
<a href="menu.do?status=list">列表显示</a>
</center>
</body>
</html>
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<script type="text/javascript">
function changeCp(cp){
document.splitForm.cp.value = cp ;
// 提交表单
document.splitForm.submit() ;
}
function changeLs(ls){
document.splitForm.ls.value = ls ;
document.splitForm.cp.value =1;
document.splitForm.submit() ;
}
function changeKeyword(){
document.splitForm.cp.value =1;
document.splitForm.submit() ;
}
</script>
</head>
<body>
<center>
<table border="0">
<tr>
<td>编号</td>
<td>标题</td>
<td>UPID</td>
<td>url</td>
</tr>
<logic:present name="all" scope="request">
<logic:iterate id="tempt" name="all" scope="request">
<tr>
<td>${tempt.id }</td>
<td>${tempt.title }</td>
<td>${tempt.upid }</td>
<td>${tempt.url }</td>
</tr>
</logic:iterate>
</logic:present>
<tr>
<td colspan="4">
<form action="${pageContext.request.contextPath }/menu.do" method="post" id="splitForm" name="splitForm">
<input type="hidden" name="ls" value="${requestScope.ls }">
<input type="hidden" name="cp" value="${requestScope.cp }">
<input type="hidden" name="status" value="list">
<img src="${pageContext.request.contextPath }/images/img/Library-button-1.gif" width="50" height="20" border="0" onClick="changeCp(1);"/>
<img src="${pageContext.request.contextPath }/images/img/Library-button-2.gif" width="50" height="20" border="0" onClick="changeCp(${requestScope.cp==1?1:(requestScope.cp-1) });"/>
<img src="${pageContext.request.contextPath }/images/img/Library-button-4.gif" width="50" height="20" border="0" onClick="changeCp(${requestScope.cp==requestScope.allPages?requestScope.allPages:(requestScope.cp+1) });"/>
<img src="${pageContext.request.contextPath }/images/img/Library-button-5.gif" width="50" height="20" border="0" onClick="changeCp(${requestScope.allPages });"/>
共${requestScope.allRecorders }条 ${requestScope.allPages }页 第${requestScope.cp }页 跳转到第
<select name="mycp" onchange="changeCp(this.value)">
<logic:present name="allPage" scope="request">
<logic:iterate id="page1" name="allPage" scope="request">
<option value="${page1 }" ${page1==cp?"selected":""}>${page1 }</option>
</logic:iterate>
</logic:present>
</select>页 每页显示
<select name="myls" onchange="changeLs(this.value)">
<option value="2" ${requestScope.ls==2?"selected":"" }>2</option>
<option value="5" ${requestScope.ls==5?"selected":"" }>5</option>
<option value="10" ${requestScope.ls==10?"selected":"" }>10</option>
<option value="20" ${requestScope.ls==20?"selected":"" }>20</option>
</select>
</form>
</td>
</tr>
</table>
</center>
</body>
</html>
发表评论
-
本小姐回来啦 —— 超级感谢MLDN
2009-08-10 13:24 1600我又回来了!哈哈,报告一个好消息,我已经成功入职博彦科 ... -
现在开始积极的找工作
2009-07-05 19:13 1176学习差不多了,得赶在毕业前找到一个工作啊,本小姐这段时 ... -
素质教育 —— 模拟面试
2009-06-30 19:10 1045今天一天都安排了职业素质的培养,包括简历的指导、技术面 ... -
EJB实体Bean开发的复合主键映射
2009-06-29 21:36 1686复合主键的映射:在Hibernate中是通过一个主键类来完成复 ... -
EJB实体Bean开发
2009-06-29 21:33 990EJB实体Bean开发的数据库连接采用数据源连接池的方式,因此 ... -
EJB3.0
2009-06-28 14:14 1233EJB是SUN公司提出的开发 ... -
JBoss服务器配置
2009-06-25 21:21 2079哦,哦,哦,EJB的准备课程啊。 这里开发使用的是 JB ... -
Spring结合iBATIS进行开发
2009-06-25 21:19 963使用Spring管理iBATIS完全可以参照Spring+Hi ... -
ibatis开发框架
2009-06-25 21:17 1258iBATIS为一个ORMapping框架,可以帮助开发人员完成 ... -
北京下雨了
2009-06-18 19:56 773上次在公交车上,听到电视里放《北京下雨了》,那么北京今天 ... -
JQuery
2009-06-10 21:03 12621、JQuery的基本语法 ... -
AJAX中使用JSON
2009-06-10 21:02 1303在Java开发中,如果要使用JSON进行开发,需要一些支持,这 ... -
AJAX框架 —— JSON基本知识
2009-06-10 21:01 945我真想知道这年头到底有多少种框架。 1、JSON ... -
还应该多帮助同学,才能让自己进步快
2009-06-08 21:57 991今天对于本小姐来讲还真是相对轻松的一天啊,上周完成了任 ... -
业务、业务、业务。。。
2009-06-03 18:41 1142项目就是业务,项目中都是业务,技术就这么点东西,只要把 ... -
IBM Project 继续中ing....
2009-06-02 19:08 874项目就是要坚持的做下去,而且要想到做到最好,虽然框架很好 ... -
实际开发了
2009-06-01 18:17 880今天开始新的项目了,项目老师帮我们搭建好了SVN服务器, ... -
web学习笔记 —— 数据源
2009-05-31 19:56 1025使用数据源可以提升数据库的操作性能,当然,不管使用与否,对于程 ... -
SSH(Spring + Struts + Hibernate)
2009-05-31 19:47 2490Spring结合Hibernate ... -
Spring中的控制反转(IOC)
2009-05-30 16:29 779什么控制反转,还弄了一个新名词 —— ioc,说白了就 ...
相关推荐
根据压缩包子文件的文件名称,我们可以推断出文档可能是按步骤编排的,从“pb11+webservice开发分布式三层应用1.doc”到“pb11+webservice开发分布式三层应用3.doc”,逐步深入地讲解了整个开发流程。 可能包含的...
提供的“pb11+webservice开发分布式三层应用.doc”文档很可能会包含详细的步骤、示例代码和注意事项,指导开发者如何实际操作这个项目。建议仔细阅读并按照文档进行实践。 **8. 使用说明** “下载使用说明.htm”...
.NET平台提供了强大的工具和库来开发和实现WebService,本文将着重分析.NET下三种分布式开发技术:WebService、Remoting和MSMQ,以及它们在具体项目中的应用实现。 首先,WebService技术主要依赖于SOAP协议(简单...
本教程“pb11+webservice开发分布式三层应用”着重讲解如何利用PowerBuilder 11和Webservice来构建分布式三层架构的应用程序。三层架构通常包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和...
### 基于XML的SOAP_WebService分布式系统架构的研究和实现 #### 1. 引言 随着互联网技术的发展和企业需求的不断变化,分布式计算技术成为了解决跨地域、跨平台通信问题的重要手段。传统的分布式计算解决方案如DCOM...
基于WebService分布式医保接口系统的研发与实现主要是为了解决医院医保结算流程中存在的问题,包括医保病人费用结算的实时性和自助化。随着医疗信息化和医疗保险制度改革的不断推进,医保病人比例的增加使得传统的...
总结,PB11结合WebService技术能有效地实现分布式三层应用的开发,通过服务端和客户端的交互,实现跨平台的数据共享和业务流程。理解并掌握PB11的WebService开发以及三层架构的应用,对于提升企业级应用的开发效率和...
【PowerBuilder 11.x与Web Service开发分布式三层应用】 PowerBuilder 11.x是一款强大的可视化编程工具,尤其适用于快速开发企业级的应用程序。在分布式三层应用开发中,它结合了Web Service技术,使得应用程序能够...
【应用实现】文中以火车时刻表和学生信息查询接口为例,展示了如何使用WebService技术进行实际的分布式开发。通过第三方接口和自定义接口,实现了数据的查询和共享。在遇到异常时,还需要进行分析并提出解决方案,...
分布式开发主要涉及的是将应用程序分解成多个独立的组件,这些组件可以分布在不同的计算机上,通过网络进行通信和协作,以实现更大规模、更复杂的任务处理。Web Service是分布式开发中的一个重要概念,它允许不同...
从提供的文件内容中,我们可以提取以下IT知识点进行详细说明: 1. 分布式异构系统(DHS):分布式异构系统是指基于网络、拥有高内聚性和透明性...这些知识点对于理解和开发基于RESTful WebService的分布式应用至关重要。
Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...
pb11+webservice开发分布式三层应用3.pdf
【PB分布式开发】是软件开发领域中的一个重要主题,主要涉及使用PowerBuilder(PB)11版本结合Web服务(webservice)来构建分布式三层应用程序。在这样的架构中,PowerBuilder作为客户端工具,负责用户界面和业务...
PB11(PowerBuilder 11)与Web Service相结合,是构建分布式三层应用程序的一种常见技术组合。在本文中,我们将深入探讨如何利用这两者来设计和实现高效、可扩展的软件系统。 首先,PowerBuilder 11是一款强大的...