- 浏览: 168135 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 1574我又回来了!哈哈,报告一个好消息,我已经成功入职博彦科 ... -
现在开始积极的找工作
2009-07-05 19:13 1143学习差不多了,得赶在毕业前找到一个工作啊,本小姐这段时 ... -
素质教育 —— 模拟面试
2009-06-30 19:10 1014今天一天都安排了职业素质的培养,包括简历的指导、技术面 ... -
EJB实体Bean开发的复合主键映射
2009-06-29 21:36 1655复合主键的映射:在Hibernate中是通过一个主键类来完成复 ... -
EJB实体Bean开发
2009-06-29 21:33 962EJB实体Bean开发的数据库连接采用数据源连接池的方式,因此 ... -
EJB3.0
2009-06-28 14:14 1200EJB是SUN公司提出的开发 ... -
JBoss服务器配置
2009-06-25 21:21 2045哦,哦,哦,EJB的准备课程啊。 这里开发使用的是 JB ... -
Spring结合iBATIS进行开发
2009-06-25 21:19 935使用Spring管理iBATIS完全可以参照Spring+Hi ... -
ibatis开发框架
2009-06-25 21:17 1218iBATIS为一个ORMapping框架,可以帮助开发人员完成 ... -
北京下雨了
2009-06-18 19:56 734上次在公交车上,听到电视里放《北京下雨了》,那么北京今天 ... -
JQuery
2009-06-10 21:03 12201、JQuery的基本语法 ... -
AJAX中使用JSON
2009-06-10 21:02 1277在Java开发中,如果要使用JSON进行开发,需要一些支持,这 ... -
AJAX框架 —— JSON基本知识
2009-06-10 21:01 908我真想知道这年头到底有多少种框架。 1、JSON ... -
还应该多帮助同学,才能让自己进步快
2009-06-08 21:57 956今天对于本小姐来讲还真是相对轻松的一天啊,上周完成了任 ... -
业务、业务、业务。。。
2009-06-03 18:41 1115项目就是业务,项目中都是业务,技术就这么点东西,只要把 ... -
IBM Project 继续中ing....
2009-06-02 19:08 841项目就是要坚持的做下去,而且要想到做到最好,虽然框架很好 ... -
实际开发了
2009-06-01 18:17 844今天开始新的项目了,项目老师帮我们搭建好了SVN服务器, ... -
web学习笔记 —— 数据源
2009-05-31 19:56 984使用数据源可以提升数据库的操作性能,当然,不管使用与否,对于程 ... -
SSH(Spring + Struts + Hibernate)
2009-05-31 19:47 2463Spring结合Hibernate ... -
Spring中的控制反转(IOC)
2009-05-30 16:29 755什么控制反转,还弄了一个新名词 —— ioc,说白了就 ...
相关推荐
(Webservice)分布式开发的内容(Webservice)分布式开发的内容(Webservice)分布式开发的内容(Webservice)分布式开发的内容(Webservice)分布式开发的内容(Webservice)分布式开发的内容(Webservice)分布式开发的内容...
pb11+webservice开发分布式三层应用,里面是详细的说明文档。开发必看,里面有代码说明。作者写的非常好。
分析了.NET 平台下 3 种分布式开发技术,通过使用第三方提供的火车时刻表 Web 接口和自行 设计学生信息查询接口的实验,实现了 WebService 技术在分布式开发中的应用
pb11+webservice开发分布式三层应用
pb11+webservice开发分布式三层应用的教程
pb11+webservice开发分布式三层应用培训,有简单的开发教程,包括代码
一、PB WEBSERVICE服务端的开发 二、客户端调用webservice . . .
pb11加webservice开发分布式三层应用
#资源达人分享计划#
pb11+webservice开发分布式三层应用3.pdf
pb11+webservice开发分布式三层应用
#资源达人分享计划#
#资源达人分享计划#
在大型项目开发中,避免不了分布式的应用,分布式应用的业务逻辑一般分别部署到若干个服务器上,供各个客户端程序调用。而部署到服务器上的业务逻辑一般用webservice实现。开发webservice可以使用java、也可以使用c#...
贯穿实例深入浅出地介绍了Delphi 7支持的组件技术、VCL库的扩充的一般方法、可视组件的开发与发布、ActiveX控件技术、COM/DCOM/COM+的...分布式应用开发、应用WebBroker开发电子商务应用、WebService应用等方面的内容...