Java Web项目开发简易流程

来源:互联网 发布:演唱会购票软件 编辑:程序博客网 时间:2024/05/07 00:44

未集成任何框架开发流程

1、设计数据库、数据表
2、创建动态Web工程(生成web.xml)
3、创建包model
A、根据表创建实体类->hibernate.cfg.xml
4、创建dao
A、根据系统功能,设计方法
6、创建dao.impl
B、实现对应的dao接口->配置相应的applicationContext.xml、web.xml
7、创建service
A、根据功能设计方法(80%跟dao类似)->配置相应的applicationContext.xml、web.xml
8、创建service.impl
A、实例化dao实现类,通过dao接口调用方法 ->dao直接调用方法不用实例化
9、可选(建议)
创建包test
A、编写静态方法,测试service中方法
10、系统加入设置编码filter
11、实现功能
A、创建JSP页面(位置已经无所谓啦)
B、创建页面对应Action,重写doGet方法,转发该JSP页面 —>struts进行设计—>struts.xml
C、设计该JSP页面
D、如果该页面需要展示数据,修改doGet方法,读取数据,放入request中
E、使用JSTL+EL表达式,展示数据
F、如果该JSP页面需要处理,重写doPost方法,然后跳转到某个Action或转发某个JSP页面 —>struts进行设计—>struts.xml
12、系统加入权限filter

使用S2SH集成框架后开发流程

1、数据库设计:根据需求设计相应的数据库、数据表。(数据表结构由hibernate实体类自动导出)
2、创建动态Web工程(生成web.xml)
3、创建包model
A、根据表创建实体类
B、对实体类进行Hibernate配置
a、@Entity:标志为一个实体类
@Table(name = “class”):标志这是一个表
@ID:在主键的get方法上面加
@GeneratedValue:标志主键自增长
b、配置不同实体类之间的关系映射(具体内容见博客下方:”关系映射:一对多“):如
@OneToMany(mappedBy = “engineer”)
或者@ManyToOne
@JoinColumn(name = “studentId”)
C、数据库与Hibernate:
a、拷入Hibernate的jar包。
b、修改“spring_hibernate_transaction.xml”中的内容:
<property name="annotatedClasses">
<list>
<!-- 列出全部的标有hibernate注解的PO类 -->
<value>com.ifly.online_repair.model.AdminInfo</value>
<value>com.ifly.online_repair.model.CommentInfo</value>
<value>com.ifly.online_repair.model.EngineerInfo</value>
<value>com.ifly.online_repair.model.NewsInfo</value>
<value>com.ifly.online_repair.model.StudentInfo</value>
</list>
</property>

c、修改”jdbc.properties“中关于数据库的基本信息。
d、修改”applicationContext.xml“:让Hibernate实体类与数据库中表对应。
applicationContext.xml中的内容:

    <import resource="spring_hibernate_transaction.xml" />//这个是上面要求修改的内容    <!-- 自动搜索指定包及其子包下的所有Bean类 -->    <context:component-scan base-package="com.ifly.online_repair" />//这条语句是spring框架扫描所有的类中需要注入的信息

ps:”ehcache.xml“为Hibernate中二级缓存需要的配置文件。
4、创建dao
A、根据系统功能,设计方法
5、创建dao.impl
A、a、在DaoImpl的类上加上:@Repository("adminDao"),代表这个类的简称,在需要实例化的类上加上:@Resource(name = "上面简称")
b、 private SessionFactory sessionFactory;,生成set方法,在上面加上@Resource(name = "sessionFactory")
B、在具体的方法中使用session:

Session session = sessionFactory.getCurrentSession();session.beginTransaction();session.save(adminInfo);session.getTransaction().commit();
`

ps:注意导包
C、测试时使用: 不能直接实例化,要使用spring进行实例化。

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");AdminDao adminDao =  ac.getBean("adminDao", AdminDao.class);//第一个参数:实现类的注解名称,第二个参数:实现类的类型adminDao.addAdmin(adminInfo);

6、创建service
A、根据功能设计方法(80%跟dao类似)
7、创建service.impl
A、类内部定义dao类中的变量(不用实例化,使用spring进行注入)。
B、生成变量的set方法,上面使用注解:@Resource(name="commentDao")
C、在该类的上面加上:@Service("commentService")
8、可选(建议)
创建包test
A、编写静态方法,测试service中方法。
ps:实例化应该用spring来进行实例化,测试应该使用上面测试dao层方法是的实例化。

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");AdminDao adminDao =  ac.getBean("adminDao", AdminDao.class);//第一个参数:实现类的注解名称,第二个参数:实现类的类型adminDao.addAdmin(adminInfo);

9、系统加入设置编码filter
10、实现功能
A、创建JSP页面(位置已经无所谓啦,没有内容的jsp页面)
B、创建页面对应Action:使用Struts2来管理
a、拷jar包
b、”web.xml“中配置
c、创建Action类:类的上方加上

@Scope("prototype")@Controller("myNewsAction")  

对于Action类中的变量:

private CommentInfo commentInfo;private NewsService newsService;@Resource(name = "newsService")public void setNewsService(NewsService newsService) {    this.newsService = newsService;    }@Resource(name = "commentService")public void setCommentService(CommentService commentService) {    this.commentService = commentService;    }

使用spring框架来对其进行管理(实例化),生成set方法,在上面使用@Resource(name = "commentService")
d、拷入”struts.xml“到src中,修改其中内容:

    <package name="index" namespace="/" extends="struts-default">        <action name="index" class="com.ifly.bbs.struts.action.NewsAction"            method="index">            <result name="index">/WEB-INF/views/index.jsp</result>        </action>    </package>

ps:默认的方法为:execute()方法,但是在“method=”“”属性中指定方法是,就会执行特定的方法。
C、设计该JSP页面
D、如果该页面需要展示数据,在Action中获取数据
E、使用JSTL+EL表达式,展示数据
F、如果该JSP页面需要处理,在Action中处理,然后跳转
11、权限filter使用:核心为拦截器的框架。

关系映射:一对多:

(1)、根据表结构写出对应的类,包括主键、外键、所有属性
(2)、在“多”的类中,加“一”的对象(注意:切记将外键注释)
在“一”的类中,加“多”的Set结合,同时实例化
(3)、在“多”的类中,在get对象方法上 :
@ManyToOne
@JoinColumn(name=”userId”) // userId:外键,上面所注释的那行
(4)、在“一”的类中,在get集合方法上:
@OneToMany(mappedBy=”user”) // user:自己在“多”类中定义的属性名字

0 0
原创粉丝点击