Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、Struts2

1.1、了解Struts2

Struts2是基于MVC设计模式的Java Web框架技术之一,按照MVC设计思想把Java Web应用程序分为:

控制器层,包括核心控制器FilterDispatcher和业务控制器Action;

模型层,包括业务逻辑组件和数据库访问组件;

视图层,包括HTML、JSP、Struts2的标签等;

Struts2标签库分为3大类:

UI标签(包含表单标签&非表单标签)、非UI标签(包含数据标签&控制标签)、Ajax标签

内容繁多,用到的时候再查吧。

1.2、搭建环境

在web项目右键>Project Capabilties>Add Struts Capabilities,即可配置好Struts2环境。

{其中在匹配模式的单选按钮组中选择/*,意为全部匹配,对应web.xml中

<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

}

1.3、测试

参考(http://www.cnblogs.com/wchhuangya/archive/2011/03/21/1968877.html),直接从(五、struts2实例--简单的登录例子)开始即可顺利完成;

其中处理器映射struts.xml

<package name="struts2" namespace="/" extends="struts-default"><action name="login" class="org.jason.actions.LoginAction" method="execute"><result name="success">/welcome.jsp</result><result name="login">/login.jsp</result></action></package>

主要属性说明:(package-name:用于区别不同的package;必须是唯一的、可用的变量名;用于其它package来继承;

                    package--namespace:用于减少重复代码(和struts1比较);是调用action时输入路径的组成部分;

                    package--extends:用于继承其它package以使用里面的过滤器等东东;

<action>元素中name属性表示请求映射的地址,class属性表示请求的Action处理类),如果将class名字写错(误写成com.jason.actions.LoginAction了),会报错如下:

严重: Exception starting filter struts2
java.lang.ClassNotFoundException:

出现此错误之后,系统提示是过滤器加载的问题,想到web.xml中

<filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

可能有问题,但运行环境是自动生成的,故排除此错误,仔细观察发现<action>中class写错了。

若盲目修改生成的参数只会徒增烦恼。

2、Spring

2.1、了解Spring

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架

2.2、搭建Spring环境

参考Myeclipse10下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3 之后会发现,其实在MyEclipse10下搭建三个框架都挺简单的。

概括其流程:

a、新建web项目ssh;

b、添加Spring。MyEclipse→Project Capabilities→Add Spring Capabilities;

c、version选择3.0之后,选择5个包(按图选择相应的包Spring 3.0 AOP,Spring 3.0 Core,Spring 3.0 Persistence Core,Spring 3.0 Persistence JDBC,Spring 3.0 Web;JAR Library Installation里选择Copy到lib目录(避免发布到Tomcat出问题)。 );

d、自动生成applicationContext.xml;

2.3、测试

2.3.1、在applicationContext.xml中添加Bean配置

<!-- 添加bean配置 --><bean id="HelloWorld" class="com.demo.spring.test.HelloWorld"><property name="message"><value>Jason's World</value></property></bean>

2.3.2、新建Bean类HelloWorld.java和测试类Test.java

package com.demo.spring.test;
public class HelloWorld {protected String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String execute(String str) {return "Hello " + getMessage()+"\tstr:"+str;}
}

package com.demo.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Test {public static void main(String[] args) {ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml");HelloWorld hello = (HelloWorld) ctx.getBean("HelloWorld");System.out.println(hello.execute("test"));System.out.println(hello.getMessage());hello.setMessage("set message");System.out.println(hello.getMessage());}
}

输出结果则表明环境已经支持Spring了

Hello Jason's World str:test
Jason's World
set message

3、Hibernate

3.1、了解Hibernate

更好的教程:

http://blog.csdn.net/mazhaojuan/article/category/1756651

{四星,5篇系列教程,包含概念、实践、测试,不足之处在于一些可以自动生成的代码还要自己写}

在MyEclipse中快速搭建hibernate应用

{五星,其中d.创建实体类及该实体类的映射文件使用MyEclipse自动生成,简便清晰}

3.2、搭建环境

参考上文五星教程即可,其中(创建SessionFactory,这个SessionFactory其实是Hibernate提供的一个用于管理Session的类,他可以确保在每个独立的线程中Session是唯一的。),2.2中教程没创建SessionFactory,应该不恰当;

该过程自动创建,在此指定factory的位置com.demo.hibernate,默认名称为HibernateSessionFactory.java;

【如果是在上节Spring基础上搭建Hibernate,在一步步next的过程中最好选择新建一个独立的xml(2.2中选择将Hibernate的配置添加到Spring生成的applicationContext.xml中,这会导致测试故障难找),默认名hibernate.cfg.xml】;

hibernate.cfg.xml详解

        <!--选择使用的方言  --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 连接字符串 --><property name="connection.url">jdbc:mysql://localhost:3306/page0803</property><!-- 连接数据库的用户名(本数据库密码为空) --><property name="connection.username">root</property><!-- 数据库驱动 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="myeclipse.connection.profile">SSH</property><!-- 映射文件 --><mapping resource="com/demo/entity/Students.hbm.xml"/>

 

自动生成的hibernate.cfg.xml中会包含映射文件,省去很多麻烦,如果没有映射文件,运行时会报错

Students is not mapped [from Students]

3.3、测试

3.3.1、数据库

使用page0803的students表(http://my.oschina.net/SnifferApache/blog/297572#OSC_h3_20)

3.3.2、Test.java

按照3.1五星中操作自动生成持久化类Students.java和映射文件Students.hbm.xml;

Test.java

package com.demo.entity;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.demo.hibernate.HibernateSessionFactory;
public class Test {Session session = null;Transaction tx = null;//@SuppressWarnings("rawtypes")public static void main(String[] args) {Test th = new Test();List cl = th.getAllStudents();if (cl != null) {Iterator it = cl.iterator();while (it.hasNext()) {Students stu = (Students) it.next();System.out.println("ID:" + stu.getStuId() + "name:"+ stu.getStuName() + "address:" + stu.getAddress()+ "Phone:" + stu.getStuPhone());}}}//@SuppressWarnings("rawtypes")public List getAllStudents() {session = HibernateSessionFactory.getSession();List stulist = null;try {tx = session.beginTransaction();stulist = session.createQuery("from Students").list();return stulist;} catch (Exception ex) {System.err.println(ex.getMessage());return null;} finally {HibernateSessionFactory.closeSession();}}
}

运行结果

ID:1name:杨华林address:长沙Phone:13787825190
ID:2name:李明清address:天津Phone:13787525190
ID:3name:李小华address:大连Phone:13788451190
ID:4name:郑小明address:苏州Phone:13787052188
ID:5name:杨一新address:西安Phone:13787851190
ID:6name:王新任address:广州Phone:13787056460
ID:7name:谢小华address:深圳Phone:13787075550
ID:8name:王建明address:厦门Phone:13788853690
ID:9name:秦一生address:北京Phone:13788689236
ID:10name:田翠林address:杭州Phone:13787655150
ID:11name:陈小明address:广州Phone:13787623668

4、实现一个SSH项目(挖坑待填

挖坑待填

转载于:https://my.oschina.net/SnifferApache/blog/305691

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高地址和低地址、高字节与低字节、大小端模式的转换、存储顺序

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一、高地址和低地址 二、高字节低字节 如int a16777220&#xff0c;化为十六进制是0x01 00 00 04&#xff0c;则04属于低字节&#xff0c;01属于高字节。 三、大小端模式 &#xff08;1&#xff09;如果a在内…

漫谈数据挖掘从入门到进阶

入门&#xff1a;数据挖掘入门的书籍&#xff0c;中文的大体有这些&#xff1a;Jiawei Han的《数据挖掘概念与技术》Ian H. Witten / Eibe Frank的《数据挖掘 实用机器学习技术》Tom Mitchell的《机器学习》TOBY SEGARAN的《集体智慧编程》Anand Rajaraman的《大数据》Pang-Nin…

(转)Asp.Net生命周期系列一

原文地址&#xff1a;http://www.cnblogs.com/skm-blog/archive/2013/07/07/3176713.html Asp.Net生命周期对于初级甚至中级程序员来说&#xff0c;一直都是一个难题&#xff0c;很多程序员不了解生命周期&#xff0c;导致使用Asp.Net做开发感觉很不灵活&#xff0c;感觉太多东…

与TCP有关的面试内容

以下内容源于网络资料的学习与整理。 参考博客 TCP/IP四层模型 - BlueTzar - 博客园&#xff08;OSI参考模型和TCP模型的详解&#xff0c;包括格式&#xff09; TCP/IP协议-为什么说TCP是可靠连接_shuaixio的博客-CSDN博客&#xff08;为什么可靠及优缺点&#xff09; 两张动图…

JUnit4概述

JUnit4是JUnit框架有史以来的最大改进&#xff0c;其主要目标便是利用Java5的Annotation特性简化测试用例的编写。先简单解释一下什么是Annotation&#xff0c;这个单词一般是翻译成元数据。元数据是什么&#xff1f;元数据就是描述数据的数据。也就是说&#xff0c;这个东西在…

正则表达式30分钟入门教程(转)

分享到一键分享QQ空间新浪微博百度云收藏人人网腾讯微博百度相册开心网腾讯朋友百度贴吧豆瓣网搜狐微博百度新首页QQ好友和讯微博更多...百度分享首页 | 正则表达式30分钟入门教程 | 常用正则表达式| 正则表达式速查表 | 正则表达式测试工具 | 正则表达式 | 正则练习器在线版 正…

进程、线程简介

以下内容源于网络资源的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 参考博客 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html&#xff08;通俗理解&#xff09; https://blog.csdn.net/chen_geng/article/details/51613445&#xff08;表格…

使用keil建立标准STM32工程模版(图文详细版!)

1. 模板工程的创建(超级详细版&#xff0c;使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学&#xff0c;让开发更容易更方便&#xff0c;希望大家养成良好的习惯&#xff0c;使用具有合理结构的工程目录&#xff0c;当你着手于较大的软件项目时&a…

android模拟机新闻APP,DavidTGNewsProject

DavidTGNewsProject##【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端(原创作品&#xff0c;转载请说明出处)先给大家看一下效果图&#xff1a;这个项目总体来说虽然不是特别难&#xff0c;但是确实非常常用的功能。是业余时间自己写的一个小项目。以前我们写的时…

轻操作动作休闲单机游戏《狂斩三国2》评测

游戏类别&#xff1a;动作休闲单机游戏时隔一年&#xff0c;曾在国内和台湾手游市 场获得top1佳绩的《狂斩三国》再度归来&#xff01;其策略加动作的独特玩法在当时颠覆了玩家们对三国游戏的阵营认知。比传统策略更简单明快&#xff0c;比传统动作无脑砍更 具思考乐趣&#xf…

物联网简介

以下内容源于朱有鹏老师课程的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 本文档提供下载&#xff1a;提取码1111——物联网简介 1、什么是物联网 1.1.物联网的概念和发展历程 1.1.1、认识物联网 &#xff08;1&#xff09;百度百科中物联网定义 &#xff08;…

Mysql语句与应用

2019独角兽企业重金招聘Python工程师标准>>> 1。正则表达式 搜索多个关键词&#xff0c;“或”, 等同 %上海% | %内蒙古% SELECT * FROM analysis_result WHERE result REGEXP 上海|内蒙古 LIMIT 1; "且" SELECT * FROM analysis_result WHERE id 1 AND …

android gb2312 utf-8,不同编码页面之间用form传值出现乱码问题解决方案 utf-8 到 gb2312...

相信有人也曾遇到过这种问题&#xff0c;今天将这个问题稍作整理发布出来。由于编码的问题传值出现乱码&#xff0c;一看到这样的情况&#xff0c;我们首先想到的是线面的两种解决办法&#xff1a;方案一&#xff1a;在接收参数页面进行转码 (这是较为理想的解决办法)方案二&a…

颜色的数字化描述(RGB与YUV的简介)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 &#xff08;1&#xff09;YUV和RGB的相互转换实验_Geek.Fan的博客-CSDN博客 &#xff08;2&#xff09; 工作中用到的一些基础知识 &#xff08;3&#xff09;YUV422 YUV420 Planar \ Se…

softlayer virtual machine vhd磁盘镜像导入shell脚本

softlayer virtual machine vhd磁盘镜像导入shell脚本 脚本 测试上传; 20480 records in20480 records out2147483648 bytes (2.1 GB) copied, 44.2262 s, 48.6 MB/scurl: option --data-binary: out of memorycurl: try curl --help or curl --manual for more information 28…

第二季1:MPP模块概述

以下内容源于海思官方文档内容&#xff0c;如有侵权请告知删除。 一、MPP模块概述 海思的媒体处理软件平台&#xff08;MPP&#xff0c;Media Process Platform&#xff09;有利于应用软件的快速开发。因为该平台屏蔽了一些与芯片相关的复杂的底层处理&#xff0c;给应用软件提…

小米平板安装鸿蒙系统,【新机】安卓最强平板?MatePad Pro2曝光:预装鸿蒙OS | 小米平板5到底啥时候发布?...

目前安卓阵营还在好好做平板的可能也就是三星和华为了&#xff0c;至少整体的配置规格都还不错。根据爆料&#xff0c;华为将会在近期推出MatePad Pro 2代产品&#xff0c;预计6月份正式和大家见面。MatePadPro2将会搭载麒麟9000处理器&#xff0c;算是目前安卓平板里性能最强的…

第二季3:sample_venc.c的整体分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、sample文件夹的介绍 将mpp/sample文件夹以及mpp/include文件夹导入SI后&#xff0c;搜索main时可以发现很多main函数。这说明sample文件夹下有很多例程&#xff0c;每个例程面向一个典型应用。…

poj 2891 Strange Way to Express Integers

题目&#xff1a;http://poj.org/problem?id2891 思路&#xff1a;扩展欧几里得 #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> using namespace std; #define maxn 100010 int n; long lo…

读书笔记2014第13本:《富爸爸,穷爸爸》

早就收藏了《富爸爸&#xff0c;穷爸爸》这本书&#xff0c;一直没看&#xff0c;最近仔细翻看一遍&#xff0c;发现自己智商一般&#xff0c;情商不行&#xff0c;原来财商更差&#xff0c;连书里的穷爸爸也比不上。这本书在这个时代再看&#xff0c;已经跟不上形势的发展了&a…