Myeclipse搭建ssh框架

1.创建项目

打开Myeclipse8.6,新建web工程,命名为ssh,点击完成。

Myeclipse搭建ssh框架

Myeclipse搭建ssh框架

获得目录结构如下:

Myeclipse搭建ssh框架

2为项目添加Struts能力

    a)右键点击项目,选择MyEclipse->Add Struts Capabilities,或者点击菜单栏中MyEclipse->Project Capabilities->Add Struts Capabilities。

Myeclipse搭建ssh框架

b)选择struts2.1版本

Myeclipse搭建ssh框架

c)点击下一步,选择Struts Core(核心库)和Struts 2 Spring(包含集成Spring插件)的两个最基本库,其他根据需要可以添加。

Myeclipse搭建ssh框架

d)点击完成,添加后的项目多了一个Struts.xml(用于配置action),web.xml中添加了核心过滤器的配置。

Myeclipse搭建ssh框架

<filter>

    <filter-name>struts2</filter-name>

    <filter-class>

        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

    </filter-class>

</filter>

<filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

 

3.为项目添加Spring能力

a)右键点击项目,选择MyEclipse->Add Spring Capabilities,或者点击菜单栏中MyEclipse->Project Capabilities->Add Spring Capabilities。

b)选择Spring3.0版本,类库选择 Spring 3.0 AOP、Spring 3.0 Core、Spring 3.0 Persistence Core、Spring 3.0 Persistence JDBC、Spring 3.0 Web 5个库,并勾选复制到本地WEB-INF/lib目录。

c)点击下一步,默认配置不需修改。

Myeclipse搭建ssh框架

d)点击完成,查看添加Spring后的项目,增加了applicationContex.xml文件

Myeclipse搭建ssh框架

4.为项目添加Hibernate能力

a)右键点击项目,选择MyEclipse->Add Hibernate Capabilities,或者点击菜单栏中MyEclipse->Project Capabilities->Add Hibernate Capabilities。

b)选择Hibernate3.3版本,如果要使用注记可选中启用annotation,但是会对后续自动生成实体类造成麻烦,不选就是用xml文件形式进行实体类映射,默认勾选Hibernate 3.3 Annotation & Entity Manager、Hibernate 3.3 Core Libraries个类库,复制jar文件到本地WEB-INF/lib文件夹下。

Myeclipse搭建ssh框架

c)点击下一步,选择使用Spring的配置文件applicationContext.xml,这样就不会生成hibernate.cfg.xml,生成与否看个人习惯。

Myeclipse搭建ssh框架

d)点击下一步,选择已经存在的applicationContext.xml文件的位置以及创建sessionFactory的名字

Myeclipse搭建ssh框架

e)下一步,选择已经建立好的数据库连接mydb

Myeclipse搭建ssh框架

f)点击下一步,取消勾选,不生成HibernateSessionFactory类

Myeclipse搭建ssh框架

g)点击完成,查看工程,applicationContext.xml文件中增加了数据库连接的配置,包括datasource和sessionFactory

Myeclipse搭建ssh框架

环境搭建完毕

5.搭建项目结构(分包)

a)创建包结构:model(实体类)、dao(数据库访问类)、service(业务逻辑类)、web(控制类)

数据库名:bai

建立users表 ,数据库脚本

CREATE TABLE users(

id int(11) NOT NULL auto_increment ,

username varchar(50) default NULL,

password varchar(50) default NULL,

PRIMARY KEY (id)

);

 

Myeclipse搭建ssh框架

8.搭建项目结构(model、dao生成

利用Myeclipse生成model和dao(最好自己构建可以减少冗余代码)

转到MyEclipse数据库浏览视图下,双击mydb进行连接

Myeclipse搭建ssh框架

右键点击users表,选择Hibernate反向工程

Myeclipse搭建ssh框架

选择生成目录为app.model,勾选创建POJO即创建表对应的Javabean,同时创建映射文件hbm.xml,勾选更新hibernate配置,勾选创建spring dao。

Myeclipse搭建ssh框架

下一步,选择id生成策略为native,因为users主键自增,或者在下一步中选择也可以

Myeclipse搭建ssh框架

Myeclipse搭建ssh框架

点击完成,回到代码视图查看工程变化,model包下面增加了Users.java、UsersDAO.java、Users.hbm.xml三个文件

Myeclipse搭建ssh框架

将UsersDAO移动到dao包中,并抽出接口IUsersDAO

Myeclipse搭建ssh框架

Myeclipse搭建ssh框架

因为位置移动需要修改applicationContex.xml中的配置

<bean id="UsersDAO" class="app.dao.UsersDAO">

    <property name="sessionFactory">

        <ref bean="sessionFactory"></ref>

    </property>

</bean>

6.搭建项目结构(service、web编写)

a)编写service层代码,创建IUsersService接口和UsersService实现类,编写CRUD的方法。

IUsersService接口

package app.service;

import java.util.List;

import app.model.Users;

public interface IUsersService {

    public List<Users>findAll();

    public List<Users> findByUsername (String uname);v

    public Users findByUid(Integer uid);

    public void addUsers(Users u) throws Exception ;

    public void updateUsers(Users u) throws Exception ;

    public void delUsers(Integer uid) throws Exception ;

    public Users login(String uname,String upass);

}

UsersService实现类

package app.service;

import java.util.List;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import app.dao.IUsersDAO;

import app.dao.UsersDAO;

import app.model.Users;

 

public class UsersService implements IUsersService {

    private static final Logger log = LoggerFactory.getLogger(UsersService.class);

    private IUsersDAO usersDAO=null;

    public void setUsersDAO(IUsersDAO usersDAO) {

        this.usersDAO = usersDAO;

     }

    public void addUsers(Users u) throws Exception {

        usersDAO.save(u);        

     }

    public void delUsers (Integer uid) throws Exception {

        usersDAO.delete(findByUid(uid));

     }

    public List<Users> findAll() {

        return usersDAO.findAll();

     }

    public List<Users> findByUsername(String uname) {

        return usersDAO.findByUsername(uname);

     }

    public Users findByUid(Integer uid) {

        return usersDAO.findById(uid);

     }

    public Users login(String uname, String upass) {

        

         List list = usersDAO.findByUsername(uname);

        if(null==list||list.size()==0)

            return null;

         Users u=(Users) usersDAO.findByUsername(uname).get(0);

        if(null==u)

            return null;

    if(uname.equals(u.getUsername())&&upass.equals(u.getPassword()))

            return u;

        else

            return null;

     }

    public void updateUsers (Users u) throws Exception {

        usersDAO.attachDirty(u);

     }

}

b)编写web层UsersAction代码,用于对用户增删改查进行处理

package app.web;

import java.util.ArrayList;

import java.util.List;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.context.ApplicationContext;

import app.model.Users;

import app.service.IUsersService;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UsersAction extends ActionSupport{

    private static final Logger log = LoggerFactory.getLogger(UsersAction.class);

     private Integer uid=new Integer(0);//用于修改删除时传参数

     private Users u=new Users();//用于增改

     private List<Users> userList=new ArrayList<Users>();//用于查询

    private IUsersService usersService=null;    

    public String addUser() throws Exception{

        try {

            usersService.addUsers(u);

         } catch (Exception e) {

            log.error("保存用户错误",e);

            return ERROR;

         }

        return SUCCESS;

     }    

    public String listUser() throws Exception{        

        userList=usersService.findAll();

        return SUCCESS;

     }

    public String editUser() throws Exception{

        try {

             u=usersService.findByUid(uid);

         } catch (Exception e) {

            log.error("修改用户错误",e);

            return ERROR;

         }

        return SUCCESS;

     }

    public String updateUser() throws Exception{

        try {

            usersService.updateUsers(u);

         } catch (Exception e) {

            log.error("更新用户错误",e);

            return ERROR;

         }

        return SUCCESS;

     }    

    public String delUser() throws Exception{

        try {

            usersService.delUsers(uid);

         } catch (Exception e) {

            log.error("删除用户错误",e);

            return ERROR;

         }

        return SUCCESS;

     }    

    public String login() throws Exception{

        try {

             Users loginUser=usersService.login(u.getUsername(), u.getPassword());

            if(null!=loginUser){

                ActionContext context=ActionContext.getContext();

                context.getSession().put("LOGINUSER",loginUser);

                return SUCCESS;

             }

         } catch (Exception e) {

            log.error("登录查询错误",e);

            return ERROR;

         }

        return INPUT;

     }    

    public void setUsersService(IUsersService usersService) {

        this.usersService = usersService;

     }    

    public Users getU() {

        return u;

     }

    public void setU(Users u) {

        this.u = u;

     }    

    public List<Users>getUserList() {

        return userList;

     }

    public void setUserList(List<Users>userList) {

        this.userList = userList;

     }

    public Integer getUid() {

        return uid;

     }

    public void setUid(Integer uid) {

        this.uid = uid;

     }

}

7.搭建项目结构(配置文件编写)

a)补充applicationContext.xml配置文件,装配注入关系和事务处理

增加spring配置文件节点的命名空间,否则事务处理节点不识别:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:aop="http://www.springframework.org/schema/aop"

       xmlns:tx="http://www.springframework.org/schema/tx"

       xsi:schemaLocation="

       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

增加装配关系

<bean id="UsersDAO" class="app.dao.UsersDAO">

    <property name="sessionFactory">

       <ref bean="sessionFactory"></ref>

    </property>

    </bean>

<bean id="UsersService" class="app.service.UsersService">

    <property name="usersDAO" ref="UsersDAO"/>

</bean>

<bean id="UsersAction" class="app.web.UsersAction">

    <property name="usersService" ref="UsersService"/>

</bean>

增加事务处理机制

    <!--配置事务管理器-->

<bean id="transactionManager"        class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory">

        <ref bean="sessionFactory"/>

    </property>

</bean>

<!--配置事务的传播特性-->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

    <tx:attributes>

        <tx:method name="save*" propagation="REQUIRED"/>

        <tx:method name="update*" propagation="REQUIRED"/>

        <tx:method name="delete*" propagation="REQUIRED"/>

        <tx:method name="add*" propagation="REQUIRED"/>

        <tx:method name="del*" propagation="REQUIRED"/>

        <tx:method name="*" read-only="true"/>

    </tx:attributes>

</tx:advice>

<!-- 哪些类的哪些方法参与事务 -->

<aop:config>

        <aop:pointcut id="allServiceMethod" expression="execution(* app.service.*.*(..))"/>

        <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice"/>

</aop:config>

    </beans>

 

b)配置Struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="struts.objectFactory" value="spring"></constant>

<package name="usermanage" extends="struts-default">

<action name="addUser" class="UsersAction" method="addUser">

<result name="success" type="redirect">listUser.action</result>

<result name="error">/error.jsp</result>

</action>

<action name="editUser" class="UsersAction" method="editUser">

<result name="success">/user/user_edit.jsp</result>

</action>

<action name="updateUser" class="UsersAction" method="updateUser">

<result name="success" type="redirect">listUser.action</result>

<result name="error">/error.jsp</result>

</action>

<action name="delUser" class="UsersAction" method="delUser">

<result name="success" type="redirect">listUser.action</result>

<result name="error">/error.jsp</result>

</action>

<action name="listUser" class="UsersAction" method="listUser">

<result name="success">/user/user_list.jsp</result>

</action>

<action name="login" class="UsersAction" method="login">

<result name="success">/index.jsp</result>

<result name="input">/login.jsp</result>

<result name="error">/error.jsp</result>

</action>

</package>

</struts>

c)配置web.xml,设定applicationContex.xml的加载位置,如果放在WEB-INF下则不需要设定,配置监听

 <context-param>

 <param-name>contextConfigLocation</param-name>

    <param-value>

        classpath:applicationContext.xml

    </param-value>

    </context-param>

    <listener>

    <listener-class>

        org.springframework.web.context.ContextLoaderListener

    </listener-class>

    </listener>

8.搭建项目结构(页面代码)

a)页面关键代码

User_add.jsp

<body>

<s:form action="addUser">

<table border="1">

<tr><s:textfield label="用户名" name="u.uname"></s:textfield></tr>

<tr><s:textfield label="密码" name="u.upass"></s:textfield></tr>

<tr><td colspan="2"><s:submit value="保存"></s:submit></td></tr>

</table>

</s:form>

</body>

User_edit.jsp

<body>

<s:form action="updateUser">

    <table border="1">

        <s:hidden name="u.uid"></s:hidden>

        <tr><s:textfield label="用户名" name="u.uname"></s:textfield></tr>

        <tr><s:textfield label="密码" name="u.upass"></s:textfield></tr>

        <tr><td colspan="2"><s:submit value="保存"></s:submit></td></tr>

    </table>

</s:form>

 

</body>

User_list.jsp

<body>

<table border="1">

<tr><td>编号</td><td>用户名</td><td>密码</td><td>操作</td></tr>

<s:iterator value="userList">

<tr>

<td>${uid}</td>

<td>${uname }</td>

<td>${upass }</td>

<td><a href='<s:url action="editUser"><s:param name="uid" value="uid" /></s:url>'>修改</a>&nbsp;

<a onclick="return confirm('确定要删除吗?');" href='<s:url action="delUser"><s:param name="uid" value="uid" /></s:url>'>删除</a></td>

</tr>

</s:iterator>

</table>

</body>

Login.jsp

<s:form action="login">

     <table border="1">

          <tr><s:textfield label="用户名" name="u.uname"></s:textfield></tr>

          <tr><s:textfield label="密码" name="u.upass"></s:textfield></tr>

          <tr><td colspan="2"><s:submit value="登录"></s:submit></td></tr>

     </table>

</s:form>

9.测试运行

http://localhost:8080/ssh/login.jsp

Myeclipse搭建ssh框架

Myeclipse搭建ssh框架

Myeclipse搭建ssh框架

Myeclipse搭建ssh框架

你可能感兴趣的:(MyEclipse)