首先,对于一个老手来说,我们最快捷的就是ctrl+c和ctrl+v,但是我们自己应该复制哪一些代码呢?

1、在我们导完包之后,我们需要写的就是web.xml,在其中,我们要有过滤器及映射和监听器.

web.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  3. <display-name>news</display-name>
  4. <welcome-file-list>
  5. <welcome-file>default.jsp</welcome-file>
  6. </welcome-file-list>
  7. <filter>
  8. <filter-name>struts2</filter-name>
  9. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  10. </filter>
  11. <filter-mapping>
  12. <filter-name>struts2</filter-name>
  13. <url-pattern>/*</url-pattern>
  14. </filter-mapping>
  15. <context-param>
  16. <param-name>contextConfigLocation</param-name>
  17. <param-value>classpath:applicationContext.xml</param-value>
  18. </context-param>
  19. <listener>
  20. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  21. </listener>
  22. </web-app>

2、在我们做好所有的准备之后,就是定义所有的包、类、接口、applicationContext.xml等。

按照一般的习惯我们定义的包名也有一定的技巧的.如图:

例如下面我们定义的一个项目(jsp----->struts----->action----->service----->dao----->sessionFactory----->applicationContext.xml)

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

[这是我自己从中总结出来的-----在此之外,还有product.entity实体类]

product.action包

  1. package product.action;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.context.annotation.Scope;
  7. import org.springframework.stereotype.Controller;
  8.  
  9. import com.opensymphony.xwork2.ActionContext;
  10. import com.opensymphony.xwork2.ActionSupport;
  11.  
  12. import product.entity.Product;
  13. import product.service.ProService;
  14.  
  15. @SuppressWarnings("serial")
  16. @Controller("proAction")
  17. @Scope("prototype")
  18. public class ProAction extends ActionSupport {
  19. @Autowired
  20. private ProService ps;
  21.  
  22. private Integer[] proId;
  23. public void setProId(Integer[] proId) {
  24. this.proId = proId;
  25. }
  26.  
  27. public String showAllPro(){
  28. List<Product> proList = ps.getAllPro();
  29. ActionContext.getContext().put("proList", proList);
  30. return "data";
  31. }
  32.  
  33. public String delPro(){
  34. ps.delPro(proId);
  35. return "deleteOK";
  36. }
  37. }
  38.  
  39. product.entity包(大家也可以看到,我在entity中使用了注解,如果不熟悉注解的可以进入这个网址
  1. package product.entity;
  2.  
  3. import javax.persistence.Column;
  4. import javax.persistence.Entity;
  5. import javax.persistence.GeneratedValue;
  6. import javax.persistence.GenerationType;
  7. import javax.persistence.Id;
  8. import javax.persistence.Table;
  9.  
  10. @Entity
  11. @Table(name="t_product")
  12. public class Product {
  13. private Integer proId;
  14. private String proName;
  15. private Float proPrice;
  16. private Integer proCount;
  17. private String proDesc;
  18.  
  19. @Id
  20. @GeneratedValue(strategy=GenerationType.IDENTITY)
  21. public Integer getProId() {
  22. return proId;
  23. }
  24. public void setProId(Integer proId) {
  25. this.proId = proId;
  26. }
  27.  
  28. @Column(name="proName",nullable=false,length=50)
  29. public String getProName() {
  30. return proName;
  31. }
  32. public void setProName(String proName) {
  33. this.proName = proName;
  34. }
  35.  
  36. @Column(name="proPrice",nullable=false)
  37. public Float getProPrice() {
  38. return proPrice;
  39. }
  40. public void setProPrice(Float proPrice) {
  41. this.proPrice = proPrice;
  42. }
  43.  
  44. @Column(name="proCount",nullable=false)
  45. public Integer getProCount() {
  46. return proCount;
  47. }
  48. public void setProCount(Integer proCount) {
  49. this.proCount = proCount;
  50. }
  51.  
  52. @Column(name="proDesc",nullable=false,length=250)
  53. public String getProDesc() {
  54. return proDesc;
  55. }
  56. public void setProDesc(String proDesc) {
  57. this.proDesc = proDesc;
  58. }
  59.  
  60. }
  1.  
  1. product.dao包(包含接口和实现类)
    【接口】
  1. package product.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import product.entity.Product;
  6.  
  7. public interface ProDao {
  8. public List<Product> getAllPro();
  9.  
  10. public void delPro(Integer proId[]);
  11. }
  1.  可以看到,和数据库进行交互的就是dao包,在dao包中,我们可以定义最原始的方法,然后通过service进行逻辑处理,最后通过action的返回字符串在struts中进行跳转到对应的jsp或者其他的页面.
  1. 【实现类】
  1. package product.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import org.hibernate.Session;
  6. import org.hibernate.SessionFactory;
  7. import org.hibernate.query.Query;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.context.annotation.Scope;
  10. import org.springframework.stereotype.Repository;
  11.  
  12. import product.entity.Product;
  13.  
  14. @Repository
  15. @Scope("prototype")
  16. public class ProDaoImpl implements ProDao {
  17. @Autowired
  18. private SessionFactory sf;
  19.  
  20. @Override
  21. public List<Product> getAllPro() {
  22. // TODO Auto-generated method stub
  23.  
  24. Session session = sf.getCurrentSession();
  25.  
  26. @SuppressWarnings("unchecked")
  27. Query<Product> query = session.createQuery("from Product");
  28.  
  29. return query.getResultList();
  30. }
  31.  
  32. @Override
  33. public void delPro(Integer proId[]) {
  34. // TODO Auto-generated method stub
  35. Session session = sf.getCurrentSession();
  36.  
  37. @SuppressWarnings("unchecked")
  38. Query<Product> query = session.createQuery("from Product where proId=:myid");
  39. //System.out.println("proId:"+proId);
  40. for(Integer id : proId){
  41. query.setParameter("myid", id);
  42.  
  43. if(query.getResultList().size()>0){
  44. Product pro = query.getResultList().get(0);
  45. session.delete(pro);
  46. }
  47. }
  48. }
  49. }
  1. product.service
    【接口】--------在这里我们可以对比于上面dao包中的接口,我们清晰的看到代码一模一样
  1. package product.service;
  2.  
  3. import java.util.List;
  4.  
  5. import product.entity.Product;
  6.  
  7. public interface ProService {
  8. public List<Product> getAllPro();
  9.  
  10. public void delPro(Integer proId[]);
  11. }

【实现类】

  1. package product.service;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.context.annotation.Scope;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.transaction.annotation.Transactional;
  9.  
  10. import product.dao.ProDao;
  11. import product.entity.Product;
  12.  
  13. @Transactional
  14. @Service
  15. @Scope("prototype")
  16. public class ProServiceImpl implements ProService {
  17. @Autowired
  18. private ProDao pd;
  19.  
  20. @Override
  21. @Transactional(readOnly=true)
  22. public List<Product> getAllPro() {
  23. // TODO Auto-generated method stub
  24. return pd.getAllPro();
  25. }
  26.  
  27. @Override
  28. public void delPro(Integer proId[]) {
  29. //System.out.println("proId:"+proId);
  30. pd.delPro(proId);
  31. }
  32. }
  1.  
  1. 还有我们数据库的一些信息。我们使用什么数据库,以及它的参数
    jdbc.properties文件
  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/news
  3. jdbc.user=root
  4. jdbc.password=123456


  5.     如果是用mysql,则复制楼上代码,
        如果是oracle则复制楼下代码。
  6.  
  7. #oracle
  8. jdbc_oracle.driver=oracle.jdbc.driver.OracleDriver
  9. jdbc_oracle.url=jdbc:oracle:thin@127.0.0.1:1521:orcl
  10. jdbc_oracle.user=news
  11. jdbc_oracle.password=123456
  1.  
  1. struts中,我们可以进行跳转,对应action中不同返回额字符串
    struts.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <constant name="struts.objectFactory" value="spring" />
  7.  
  8. <constant name="struts.ui.theme" value="simple"></constant>
  9.  
  10. <!-- 先定义一个包 -->
  11. <package name="mypck001" extends="struts-default">
  12. <action name="ProAction_*" class="proAction" method="{1}">
  13. <result name="data">/WEB-INF/jsp/index.jsp</result>
  14. <result name="deleteOK" type="redirectAction">ProAction_showAllPro</result>
  15. </action>
  16. </package>
  17. </struts>
  1.  
  1. 最后面就是最容易,但也是最容易出错applicationContext.xml文件-----(但是我们可以复制粘贴,唯独需要改动的就是自动扫描包的【包名】)
    applicationContext.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
  10. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd
  11. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
  12.  
  13. <!-- 原理:自动注入processor解析器,用来解析注解 -->
  14. <!-- <context:annotation-config/> -->
  15.  
  16. <!-- 自动扫描包,也会自动注入解释器,所以不需要 context:annotation-config -->
  17. <context:component-scan base-package="product" />
  18.  
  19. <!-- 引入外部属性文件 -->
  20. <context:property-placeholder location="classpath:jdbc.properties" />
  21.  
  22. <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
  23. <!-- 注入连接池,包含了数据库用户名,密码等等信息 -->
  24. <property name="dataSource" ref="myDataSource" />
  25.  
  26. <!-- 配置Hibernate的其他的属性 -->
  27. <property name="hibernateProperties">
  28. <props>
  29. <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
  30. <prop key="hibernate.show_sql">true</prop>
  31. <prop key="hibernate.format_sql">true</prop>
  32. <prop key="hibernate.connection.autocommit">false</prop>
  33. <!-- 开机自动生成表 -->
  34. <prop key="hibernate.hbm2ddl.auto">update</prop>
  35. </props>
  36. </property>
  37. <property name="mappingResources">
  38. <list>
  39.  
  40. </list>
  41. </property>
  42.  
  43. <property name="packagesToScan">
  44. <list>
  45. <value>product.*</value>
  46. </list>
  47. </property>
  48.  
  49. </bean>
  50.  
  51. <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  52. <property name="driverClass" value="${jdbc.driver}" />
  53. <property name="jdbcUrl" value="${jdbc.url}" />
  54. <property name="user" value="${jdbc.user}" />
  55. <property name="password" value="${jdbc.password}" />
  56. <!-- 每300秒检查所有连接池中的空闲连接 -->
  57. <property name="idleConnectionTestPeriod" value="300"></property>
  58. <!-- 最大空闲时间,900秒内未使用则连接被丢弃。若为0则永不丢弃 -->
  59. <property name="maxIdleTime" value="900"></property>
  60. <!-- 最大连接数 -->
  61. <property name="maxPoolSize" value="2"></property>
  62.  
  63. </bean>
  64.     <!-- 事务管理-->
  65. <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
  66. <property name="sessionFactory" ref="sessionFactory"></property>
  67. </bean>
  68.     <!-- 注解驱动加载 -->
  69. <tx:annotation-driven transaction-manager="transactionManager"/>
  70.  
  71. </beans>
  1.  
  1. 当你完成复制之后,你的代码也算是完成可九成,注意修改一些需要通过加载包名或者类名进行操作的步骤代码。
  2.  
  3. 今天难得静下心来写了一个博客,求打赏求关注!!!
  4.  
  5.     如果错误请指正!

写了好多次SSH现在对于框架还是有一定的基础了,但是对于框架下我们该如何进行操作呢???的更多相关文章

  1. 【SSH进阶之路】一步步重构容器实现Spring框架——彻底封装,实现简单灵活的Spring框架(十一)

    文件夹      [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器開始(八)      [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入 ...

  2. 使用whiptail写linux字符界面ssh链接工具2.0

    先看一下效果 选择分组 选择服务器 开始链接 为什么写 之前写过一个字符界面的链接工具,但是看起来比较简陋,他是这个样子的: 看起来十分不好看.后来在网上看到shell中有一个whiptail工具可以 ...

  3. day 52 Django基础一之web框架的本质

    Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...

  4. 01.Django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  5. day 65 Django基础一之web框架的本质

      Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...

  6. Yaf零基础学习总结2-Yaf框架的安装

    接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...

  7. 你得知道这3个最基础的APP技术框架

    出处:优设网作者:信籽链接:http://www.uisdc.com/3-basic-app-technical-framework 信籽(手淘设计师):不知道大家有没有遇到过这种情景,当你做好一个设 ...

  8. C#_02.10_基础一_.NET框架

    C#_02.10_基础一_.NET框架 一.概念: .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境. 解读: 1..net框架是一个编程环境, 2.可以进行多语言的开发和 ...

  9. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

随机推荐

  1. 使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示。

    我们平时用eclipse开发jsp页面时智能提示效果不太理想,今天用了两个小时发现了eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclip ...

  2. JavaScript的toString()和valueof()方法

    toString()方法: 函数:函数 (function(){}).toString(); //返回"function(){}" typeof((function(){}).to ...

  3. windows下CMake使用图文手册 Part 1

    维基百科介绍“CMake是个开源的跨平台自动化建构系统,它用配置文件控制建构过程(build process)的方式和Unix的Make相似,只是CMake的配置文件取名为CMakeLists.txt ...

  4. XE6 & IOS开发之开发者账号、苹果证书(2):关于苹果证书

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.关于苹果证书. 注意 ...

  5. 仅个人兴趣,自己通过搜索他人的成果,结合自己的理解,来分析discuz的代码。

    仅个人兴趣,自己通过搜索他人的成果,结合自己的理解,来分析discuz的代码. discuz 版本: 3.2

  6. JQuery -- this 和 $(this) 的区别

    this和$(this)都是指的调用它的东西,但this是一个Html 元素,例如给img标签设置src属性可以这样写 this.src= "test.jpg"; 但是如果将thi ...

  7. Linux下的shell编程(二)BY 四喜三顺

    Ctrl + Alt + T 打开终端, $代表普通用户,#代表超级用户(root user)如:    xiangqi@xiangqi ~$           root@xiangqi ~# ec ...

  8. Struts2:效验器——声明式

    就是用xml配置的方式,而不是Java代码的形式,那个是“编程式” Action: package org.ah.s2; import com.opensymphony.xwork2.ActionSu ...

  9. 【SSM 4】Mybatis逆向生成工具

    在上一篇博客中说到,Mybatis是灵活的SQL语句应用,不想Hibernate一样有其封装好的方法,那么,当我们用Mybatis的时候(Hibernate),我们都需要编写其实体类,和配置文件.本篇 ...

  10. SpringBoot读取配置文件

    项目结构 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...