• 整理赵龙ssh2


    一、新建web项目

    1.创建web项目ssh2

    2.将项目添加到tomcat中

    <context path=”/ssh2” docBase=“H:workspace201306ssh2WebRoot”

    reloadable=”true”/>

    3.测试 http://localhost:8080/ssh2/

    二、给项目添加jar包

    1.手动添加struts所需jar

    commons-fileupload-1.2.1.jar

    commons-io-1.3.2.jar

    commons-logging-1.0.4.jar(在hibernate中存在可以不添加)

    freemarker-2.3.15.jar

    ongl-2.7.3.jar

    struts2-core-2.1.8.jar

    struts2-spring-plugin-2.1.8.jar(主要用于sptruts与spring的整合)

    xwork-core-2.1.6.jar

    2.通过myEclipse的add hibernate Capabilities添加hibernate3.2的jar包

    注意:

    1)勾选copy checked Library Jars to project and add to build-path

    2)commons-logging-1.0.4.jar在hibernate及struts中同时存在保留一个

    3.通过myEclipse的add spring Capabilities添加spring2.5的jar包

    Spring2.5 AOP Libraries(选中第三项时自动勾选)

    Spring2.5 Core Libraries

    Spring2.5 Persistence Core Libraries

    Spring2.5 Web Libraries

    注意:

    1)Copy checked Library contents to project folder(TLDS always copied)

    clip_image002

    2)applicationContext.xml必须指定放到WebRoot/WEB-INF目录下

    clip_image004

    3)不要勾选Create Spring SessionFactory that references

    4)asm.jar是由hibernate引入的jar,asm-2.2.3.jar是spring引入的jar,它们是同

    一个jar,必须进入WebRootWEB-INFlib文件夹中删除一个就行,我删除后面的一个.

    4.添加连接池

    Commons-dbcp-1.3.jar

    Commons-pool-1.5.5.jar

    5.添加数据库

    ojdbc14.jar

    6.添加日志支持

    slf4j-api-1.5.8.jar

    slf4j-log4j12-1.5.8.jar

    并将log4j.properties拷贝到src目录下

    三、修改及添加配制文件

    1.web.xml

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

    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

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

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- 下面是struts过滤器 -->

    <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>

    <!-- 下面是spring的监天器 -->

    <listener>

    <listener-class>

    org.springframework.web.context.ContextLoaderListener

    </listener-class>

    </listener>

    <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

    </web-app>

    2.添加applicationContext.xml

    3.添加struts.xml

    四、创建项目包

    clip_image006

    1.com.test.action

    2.com.test.bean

    3.com.test.dao

    4.com.test.dao

    5.com.test.dao.impl

    6.com.test.service

    7.com.test. service.impl

    8. com.test.util

    五、代码编写

    1.编写bean和相应的映射文件

    User.java

    package com.test.bean;

    public class User {

    private int id;

    private String firstname;

    private String lastname;

    private int age;

    public int getId() {

    return id;}

    public void setId(int id) {

    this.id = id;}

    public String getFirstname() {

    return firstname;}

    public void setFirstname(String firstname) {

    this.firstname = firstname;}

    public String getLastname() {

    return lastname;}

    public void setLastname(String lastname) {

    this.lastname = lastname;}

    public int getAge() {

    return age;}

    public void setAge(int age) {

    this.age = age;}

    }

    User.hbm.xml

    <?xml version="1.0"?>

    <!DOCTYPE hibernate-mapping

    PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>

    <class name="com.test.bean.User" table="users">

    <id name="id" column="id" type="int">

    <generator class="native">

    </generator>

    </id>

    <property name="firstname" column="firstname"

    type="string"></property>

    <property name="lastname" column="lastname"

    type="string"></property>

    <property name="age" column="age"

    type="int"></property>

    </class></hibernate-mapping>

    2.编写持久层dao及daoimpl

    UserDAO.java

    package com.test.dao;

    import java.util.List;

    import com.test.bean.User;

    public interface UserDAO {

    public void saveUser(User user);

    public List<User> findAllUsers();

    public void removeUser(User user);

    public void updateUser(User user);

    public User findUserById(Integer id);}

    UserDAOImpl.java

    package com.test.dao.impl;

    import java.util.List;

    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    import com.test.bean.User;

    import com.test.dao.UserDAO;

    public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

    public void saveUser(User user) {

    this.getHibernateTemplate().save(user); }

    @SuppressWarnings("unchecked")

    public List<User> findAllUsers() {

    String hql = "from User user order by user.id desc";

    return (List<User>) this.getHibernateTemplate().find(hql); }

    public void removeUser(User user) {

    this.getHibernateTemplate().delete(user); }

    public void updateUser(User user) {

    this.getHibernateTemplate().update(user); }

    public User findUserById(Integer id) {

    User user = (User) this.getHibernateTemplate().get(User.class, id);

    return user; }

    }

    3.编写业务层service及serviceimpl

    UserService.java

    package com.test.service;

    import java.util.List;

    import com.test.bean.User;

    public interface UserService {

    public void save(User user);

    public List<User> findAll();

    public void delete(User user);

    public User findById(Integer id);

    public void update(User user);

    }

    UserServiceImpl.java

    package com.test.service.impl;

    import java.util.List;

    import com.test.bean.User;

    import com.test.dao.UserDAO;

    import com.test.service.UserService;

    public class UserServiceImpl implements UserService {

    private UserDAO userDao;

    public void save(User user) {

    userDao.saveUser(user);// 完成业务逻辑 }

    public List<User> findAll() {

    return this.userDao.findAllUsers(); }

    public UserDAO getUserDao() {

    return userDao; }

    public void setUserDao(UserDAO userDao) {

    this.userDao = userDao; }

    public void delete(User user) {

    this.userDao.removeUser(user); }

    public User findById(Integer id) {

    return this.userDao.findUserById(id); }

    public void update(User user) {

    this.userDao.updateUser(user); }

    }

    4.编写action

    SaveUserAction.java

    package com.test.action.user;

    import com.opensymphony.xwork2.ActionSupport;

    import com.test.bean.User;

    import com.test.service.UserService;

    public class SaveUserAction extends ActionSupport{

    private User user;

    private UserService userService;

    public User getUser() {

    return user; }

    public void setUser(User user) {

    this.user = user; }

    public UserService getUserService() {

    return userService; }

    public void setUserService(UserService userService) {

    this.userService = userService; }

    @Override

    public String execute() throws Exception {

    //调用service相关的方法,完成实际的业务逻辑处理

    userService.save(user);

    return this.SUCCESS;

    }

    }

    ListUserAction.java

    package com.test.action.user;

    import java.util.Map;

    import com.opensymphony.xwork2.ActionContext;

    import com.opensymphony.xwork2.ActionSupport;

    import com.test.service.UserService;

    public class ListUserAction extends ActionSupport {

    private UserService userService;

    public UserService getUserService() {

    return userService; }

    public void setUserService(UserService userService) {

    this.userService = userService; }

    @Override

    public String execute() throws Exception {

    Map request= (Map)ActionContext.getContext().get("request");

    request.put("list", this.userService.findAll());

    return this.SUCCESS; }

    }

    RemoveUserAction.java

    package com.test.action.user;

    import com.opensymphony.xwork2.ActionSupport;

    import com.test.bean.User;

    import com.test.service.UserService;

    public class RemoveUserAction extends ActionSupport {

    private User user;

    private UserService userService;

    public User getUser() {

    return user; }

    public void setUser(User user) {

    this.user = user; }

    public UserService getUserService() {

    return userService; }

    public void setUserService(UserService userService) {

    this.userService = userService; }

    @Override

    public String execute() throws Exception {

    userService.delete(user);

    return this.SUCCESS;}

    }

    UpdatePUserAction.java

    package com.test.action.user;

    import com.opensymphony.xwork2.ActionSupport;

    import com.test.bean.User;

    import com.test.service.UserService;

    public class UpdatePUserAction extends ActionSupport {

    private User user;

    private UserService userService;

    public User getUser() {

    return user; }

    public void setUser(User user) {

    this.user = user; }

    public UserService getUserService() {

    return userService; }

    public void setUserService(UserService userService) {

    this.userService = userService; }

    @Override

    public String execute() throws Exception {

    user = userService.findById(user.getId());

    return SUCCESS; }

    }

    UpdateUserAction.java

    package com.test.action.user;

    import com.opensymphony.xwork2.ActionSupport;

    import com.test.bean.User;

    import com.test.service.UserService;

    public class UpdateUserAction extends ActionSupport {

    private User user;

    private UserService userService;

    public User getUser() {

    return user; }

    public void setUser(User user) {

    this.user = user; }

    public UserService getUserService() {

    return userService; }

    public void setUserService(UserService userService) {

    this.userService = userService; }

    @Override

    public String execute() throws Exception {

    userService.update(user);

    return this.SUCCESS; }

    }

    5.配制applicationContext.xml

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

    <beans 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.5.xsd">

    <bean id="dataSource"

    class="org.apache.commons.dbcp.BasicDataSource"

    destroy-method="close">

    <property name="driverClassName">

    <value>oracle.jdbc.driver.OracleDriver</value>

    </property>

    <property name="url">

    <value>jdbc:oracle:thin:@10.75.208.11:1521:ora9i</value>

    </property>

    <property name="username">

    <value>zyrj</value>

    </property>

    <property name="password">

    <value>dda01zbh12</value>

    </property>

    <property name="maxActive">

    <value>255</value>

    </property>

    <property name="maxIdle">

    <value>2</value>

    </property>

    <property name="maxWait">

    <value>120000</value>

    </property>

    </bean>

    <bean id="sessionFactory"

    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="dataSource">

    <ref local="dataSource" />

    </property>

    <property name="mappingResources">

    <list>

    <value>com/test/bean/User.hbm.xml</value>

    </list>

    </property>

    <property name="hibernateProperties">

    <props>

    <prop key="hibernate.dialect">

    org.hibernate.dialect.Oracle9iDialect

    </prop>

    <prop key="hibernate.show_sql">true</prop>

    </props>

    </property>

    </bean>

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

    <property name="sessionFactory" ref="sessionFactory" />

    </bean>

    <bean id="userDao" class="com.test.dao.impl.UserDAOImpl"

    scope="singleton">

    <property name="sessionFactory">

    <ref bean="sessionFactory" />

    </property>

    </bean>

    <bean id="userServiceTarget"

    class="com.test.service.impl.UserServiceImpl" scope="singleton">

    <property name="userDao" ref="userDao"></property>

    </bean>

    <bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

    <property name="target" ref="userServiceTarget"></property>

    <property name="transactionManager" ref="transactionManager"></property>

    <property name="transactionAttributes">

    <props>

    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

    <prop key="*">PROPAGATION_REQUIRED</prop>

    </props>

    </property>

    </bean>

    <bean id="saveUserAction"

    class="com.test.action.user.SaveUserAction" scope="prototype">

    <property name="userService" ref="userService"></property>

    </bean>

    <bean id="listUserAction"

    class="com.test.action.user.ListUserAction" scope="prototype">

    <property name="userService" ref="userService"></property>

    </bean>

    <bean id="removeUserAction"

    class="com.test.action.user.RemoveUserAction" scope="prototype">

    <property name="userService" ref="userService"></property>

    </bean>

    <bean id="updatePUserAction"

    class="com.test.action.user.UpdatePUserAction" scope="prototype">

    <property name="userService" ref="userService"></property>

    </bean>

    <bean id="updateUserAction"

    class="com.test.action.user.UpdateUserAction" scope="prototype">

    <property name="userService" ref="userService"></property>

    </bean>

    </beans>

    clip_image008

    clip_image010

    6.配制struts.xml

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

    <!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>

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

    <action name="saveUser" class="saveUserAction">

    <result name="success" type="redirect">

    listUser.action

    </result>

    </action>

    <action name="listUser" class="listUserAction">

    <result name="success">

    /list.jsp

    </result>

    </action>

    <action name="deleteUser" class="removeUserAction">

    <result name="success" type="redirect">

    listUser.action

    </result>

    </action>

    <action name="updatePUser" class="updatePUserAction">

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

    </action>

    <action name="updateUser" class="updateUserAction">

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

    </action>

    </package>

    </struts>

    7.编写jsp页面

    Index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <%@ taglib uri="/struts-tags" prefix="s" %>

    <%String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

    </head>

    <body>

    <h1><font color="red">Operation List</font></h1>

    <s:a href="save.jsp"> Save User</s:a><br><br>

    <s:a href="listUser.action"> List Users</s:a>

    </body>

    </html>

    Save.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <%@ taglib uri="/struts-tags" prefix="s" %>

    <%String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <base href="<%=basePath%>">

    <title>My JSP 'save.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

    </head>

    <body>

    <h1><font color="red">Save User</font></h1>

    <s:form action="saveUser">

    <s:textfield name="user.firstname" label="firstname"/>

    <s:textfield name="user.lastname" label="lastname"/>

    <s:textfield name="user.age" label="age"/>

    <s:submit value="submit"/>

    </s:form>

    </body>

    </html>

    List.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <%@ taglib uri="/struts-tags" prefix="s" %>

    <%String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <base href="<%=basePath%>">

    <title>My JSP 'list.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

    <script type="text/javascript">

    function del(){

    if(confirm("Are You sure?")){

    return true;

    }

    return false;

    }

    </script>

    </head>

    <body>

    <h1><font color="red"><center> User List</center> </font> </h1>

    <table border="1" width="80%" align="center">

    <tr>

    <td>序号</td>

    <td>姓</td>

    <td>名</td>

    <td>年龄</td>

    <td>删除</td>

    <td>更新</td>

    <tr>

    <s:iterator value="#request.list" id="us">

    <tr>

    <td><s:property value="#us.id"/> </td>

    <td><s:property value="#us.firstname"/></td>

    <td><s:property value="#us.lastname"/></td>

    <td><s:property value="#us.age"/></td>

    <td><s:a href="deleteUser.action?user.id=%{#us.id}" onclick="return del();">delete</s:a> </td>

    <td><s:a href="updatePUser.action?user.id=%{#us.id}">更新</s:a></td>

    <tr>

    </s:iterator>

    </table>

    </body>

    </html>

    Update.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <%@ taglib uri="/struts-tags" prefix="s" %>

    <%String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <base href="<%=basePath%>">

    <title>My JSP 'update.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

    </head>

    <body>

    <h1><font color="red"><center>Update User</center></font></h1>

    <s:form action="updateUser">

    <table>

    <tr><td>

    <s:hidden name="user.id" value="%{user.id}"></s:hidden>

    </td></tr>

    <tr><td>

    <s:textfield name="user.firstname" value="%{user.firstname}" label="first name"></s:textfield>

    </td></tr>

    <tr><td>

    <s:textfield name="user.lastname" value="%{user.lastname}" label="last name"></s:textfield>

    </td></tr>

    <tr><td>

    <s:textfield name="user.age" value="%{user.age}" label="age"></s:textfield>

    </td></tr>

    <tr><td>

    <s:submit value="submit"></s:submit>

    </td></tr>

    </table>

    </s:form>

    </body>

    </html>

    六、测试

  • 相关阅读:
    如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】
    8款实用Sublime text 3插件推荐
    windows下配置nginx+php环境
    Windows10+Ubuntu双系统安装[
    window yii2 安装插件 报yiisoft/yii2 2.0.x-dev requires ext-mbstring错
    Composer常见问题
    Yii2中如何使用CodeCeption
    php 单进程SAPI生命周期
    php的SAPI,CLI SAPI,CGI SAPI
    HTTPS服务器配置
  • 原文地址:https://www.cnblogs.com/pyrmkj/p/3154644.html
Copyright © 2020-2023  润新知