SSH
(一)、准备工作——2分钟
1、选择window-preferences菜单, 键入content,将红圈位置改为xyz
2、选择菜单“File-Export”,按下图,导出文件123.epf
3、用记事本,Ctrl+F查找到123.epf中的xyz,并将改成.abcdefghijklmnopqrstuvwxyz,保存。
4、选择菜单“File-Import”,导入文件123.epf。(同上面差不多,不再附图)
到此,代码提示功能完成。
下面,建立代码提示的快捷键。
选择window-preferences菜单, 键入keys,按下图改好配置。
有了这两种代码提示,下面的步骤才方便。
(二)建立数据库——5分钟
1、进入SQL Server,如下图,右击sa,“属性”,将sa登录名的密码改为sa
2、新建数据库news,并建立表news。表结构如下图。要注意的是:
a.Id必须是主键,一定要有主键!要不到hibernate中很麻烦的。
b.Id一定要是标识列,方便程序中的添加。
这两个地方要搞好,要不错了都不知道的。
3、输入几条数据。
(三)、建立web project项目,并完成基本框架——5分钟
1、新建项目news。
2、新建六个包。包名一定要按下面的规范!
3、调出DB Browse。
在DB Browser中右键新建
4、添加SSH支持。注意:一定要按Struts、Hibernate、Spring的顺序!!
配完到这里,项目中会有红叉,这是因为jar包冲突。
5、项目上右键,如下图点击进入。
将红框中的部分Remove掉,再点击“Add Library”
如原来建立了ssh的全部包,选中即可。
如果没有建好用户库,那得点“User Libraries”新建“ssh全部包”。
6、到此,框架已基本建立好。
(四)、完成过滤器的设置——3分钟
1、新建EncodingFilter类,注意要实现javax.servlet.Filter这一个接口。
2、基本代码如***:红框中的内容要改一下(原来是arg0什么的)
3、进入web.xml, 加入以下配置代码。保存。
<!-- 过滤器 -->
encodingFilter
com.yenange.filter.EncodingFilter
<!-- 过滤器的映射路径 -->
encodingFilter
/*
(五)、生成实体类——2分钟
1、在DB Browse中, 找到表news,
2、按下图操作
注意:下图要写包名.类名
(六)、按Dao、Biz、Action的顺序依次完成相关的类与接口——十分钟
1、NewsDao
package com.yenange.dao;
import java.util.List;
import com.yenange.entity.News;
public interface NewsDao {
public void add(News news);
public List list();
}
2、NewsDaoHibImpl
package com.yenange.dao.hibimpl;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.yenange.dao.NewsDao;
import com.yenange.entity.News;
public class NewsDaoHibImpl extends HibernateDaoSupport implements NewsDao {
@Override
public void add(News news) {
this.getHibernateTemplate().save(news);
}
@Override
public List list() {
return this.getHibernateTemplate().executeFind(new HibernateCallback(){
@Override
public List doInHibernate(Session session)
throws HibernateException, SQLException {
String hql="select n from News n order by n.beginTime desc";
Query query=session.createQuery(hql);
return query.list();
}
});
}
}
3、NewsBiz
package com.yenange.biz.impl;
import java.util.List;
import com.yenange.entity.News;
public interface NewsBiz {
public void add(News news);
public List list();
}
4、NewsBizImpl
package com.yenange.biz.impl;
import java.util.List;
import com.yenange.biz.NewsBiz;
import com.yenange.dao.NewsDao;
import com.yenange.entity.News;
public class NewsBizImpl implements NewsBiz {
private NewsDao newsDao=null;
public void setNewsDao(NewsDao newsDao) {
this.newsDao = newsDao;
}
@Override
public void add(News news) {
this.newsDao.add(news);
}
@Override
public List list() {
return this.newsDao.list();
}
}
4、在struts-config.xml中右键,新建form与action
NewsForm代码:
package com.yenange.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 com.yenange.entity.News;
public class NewsForm extends ActionForm {
private News item = new News();
public News getItem() {
return item;
}
public void setItem(News item) {
this.item = item;
}
}
5、NewsAction代码:
package com.yenange.struts.action;
import java.util.Date;
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 com.yenange.biz.NewsBiz;
import com.yenange.entity.News;
import com.yenange.struts.form.NewsForm;
public class NewsAction extends DispatchAction {
private NewsBiz newsBiz=null;
public void setNewsBiz(NewsBiz newsBiz) {
this.newsBiz = newsBiz;
}
/** 添加操作 */
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
NewsForm newsForm = (NewsForm) form;
News news=newsForm.getItem();
news.setBeginTime(new Date());
newsBiz.add(news);
List list=newsBiz.list();
request.setAttribute("list", list);
return mapping.findForward("list");
}
/** 进入显示页面 */
public ActionForward toList(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
List list=newsBiz.list();
request.setAttribute("list", list);
return mapping.findForward("list");
}
}
(七)配置struts-config.xml——5分钟
1、进入News.java,输入以下代码:
import org.springframework.web.struts.ContextLoaderPlugIn;
import org.springframework.web.struts.DelegatingActionProxy;
很好找,它们分别是第一个和第二个文件。
2、将org.springframework.web.struts.DelegatingActionProxy覆盖action的type的=后面的值。
3、在也就是最后一句前加上:
这里不好记的是:
property=contextConfigLocation--->属性:上下文配置位置;
value="classpath:applicationContext.xml"--->值:类路径
注意:切莫把属性和值互换了!!
4、给action加上forward,要注意的是:path后面必须有“/”
path="/news" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
(八)配置applicationContext.xml——10分钟
1、首先把前面的一部分回车整理成:
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
">
要留空,方便加上一些代码。
2、心里要记住:要加的只是tx和aop这两个东西而已。
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop=http://www.springframework.org/schema/aop
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
">
对比一下:其实只是复制粘贴了,把其它的东东改成tx和aop而已!
3、以下是事务的代码:
这个没有太好的办法,顺序和内容都是要记的,不过大部分可以通过快捷键按出来。
transaction-manager可以通过上面的复制。
execution这个单词是一定要记的,实在记不住,用词霸看一下“死刑”。
4、依次配置Dao、Biz 、Action,比较简单了:
<!-- 2.Dao -->
<!-- 3.Biz -->
<!-- 4.Action -->
唯一要记住的是:action中不能用id, 只能用name.
至此,配置全部完毕!
(九)、做测试——2分钟
package com.yenange.test;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yenange.biz.NewsBiz;
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
NewsBiz newsBiz=(NewsBiz)ac.getBean("newsBiz");
List list=newsBiz.list();
System.out.println(list.size());
}
}
测试一定要做,要不十有八九是有问题的!!
(十)、写页面代码——10分钟
1、index.jsp
<%@ page language="java" pageEncoding="GBK"%>
2、tag.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
prefix="logic" %>
3、add.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
添加页面
添加新闻
|
|
标题: |
|
内容: |
|
作者: |
|
|
4、list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ include file="/tag.jsp" %>
显示页面
(十一)、运行调试——5分钟
注意:
1、如页面一片空白,试着将Tomacat清空了再试;
2、actionform中一定要new一下,要不页面是无法赋值的;
3、一定要测试,没有测试通过就不要做页面!!
4、做完配置文件,一定要耐心检查,要不一点点的错误后面很难发现的!
——————————————————————————————————
(一)、准备工作——2分钟
(二)、建立数据库——5分钟
(三)、建立web project项目,并完成基本框架——5分钟
(四)、完成过滤器的设置——3分钟
(五)、生成实体类——2分钟
(六)、按Dao、Biz、Action的顺序依次完成相关的类与接口——10分钟
(七)、配置struts-config.xml——5分钟
(八)、配置applicationContext.xml——10分钟
(九)、做测试——2分钟
(十)、写页面代码——10分钟
(十一)、运行调试——5分钟
2+5+5+3+2+10+5+10+2+10+5
=17+15+12+15
=32+27=59分钟