ssh2步骤Word格式文档下载.docx
- 文档编号:18415160
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:20
- 大小:28.81KB
ssh2步骤Word格式文档下载.docx
《ssh2步骤Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ssh2步骤Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
4.
在src目录中拷贝一个struts.xml作为书写配置的起点
(注意!
和以前版本不同,是src目录!
)
一个最简单的配置文件包括下面内容:
<
?
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="
struts2_template"
extends="
struts-default"
action
HelloWorld"
class="
example.HelloWorld"
result
gotoIndex"
/index.jsp<
/result>
/action>
--
Add
actions
here
-->
/package>
packages
/struts>
其中重要的其实就一个:
action的执行和导航。
上面的
表示,当从URL请求名为HelloWorld的action时候,实际执行的是example.HelloWorld类。
附注:
类的分包:
在src下面建包即可。
表示当HelloWorld返回字符串“gotoIndex”时候,跳转到/index.jsp。
5.
下面建一个实现上面action的类。
先在src下面建一个package,名为example;
下面建一个HelloWorld类,继承ActionSupport(在com.opensymphony.xwork2中)
里面就一个函数:
public
String
execute()
throws
Exception
{
System.out.println("
Hello
from
www.WarpSpeedE"
);
return
;
}
6.
运行一下试试,访问URL为/HelloWorld.action
浏览器还是显示index.jsp,因为这个action自动跳到index.jsp了,
但console窗口却出现了提示,说明该action已经运行。
=========
好了,我们的action已经配置成功了
===========
7.
下面我看看表单的提交;
表单当然是放在jsp文件中。
我们将jsp文件放到WebRoot下面(!
这才是网站的根目录!
)。
作为实验,我们建一个子目录login来存放我们的样例表单login.jsp;
(遗憾的是现在还没有理想的可视化的编辑struts2表单的IDE)
一个最基本的jsp文件如下:
%@
page
contentType="
text/html;
charset=UTF-8"
%>
taglib
prefix="
s"
uri="
/struts-tags"
html>
body>
/body>
/html>
也就是说,最上面两行最关紧要!
拷下即可。
然后,使用DreamWeaver之类,编写相应的表单:
下面是使用Eclipse自动生成的带表单的一个简单页面:
------------------------------------------------------------------------
HTML
PUBLIC
-//W3C//DTD
4.01
Transitional//EN"
head>
title>
www.WarpSpeedE<
/title>
meta
http-equiv="
keywords"
content="
keyword1,keyword2,keyword3"
description"
this
is
my
page"
content-type"
--<
link
rel="
stylesheet"
type="
text/css"
href="
./styles.css"
/head>
form
f1"
id="
action="
method="
post"
table
border="
0"
tr>
td>
Login:
/td>
input
text"
login"
/tr>
Password:
password"
td
colspan="
2"
align="
center"
submit"
/table>
/form>
-----------------------------------------------------------------------------
我们做一下修改即可将它变成struts2的jsp表单页面:
(1)第一行替换成struts2要求的那两行<
%@...
(2)替换所有表单字段。
例如:
替换成:
s:
Login"
注意:
这里的action="
指明要提交给一个名为Login的action
换成:
textfield
/>
label="
替换成
password
submit/>
惊奇小发现:
我在MyEclipse7.5中发现一个Web
Page
Editor,用这个编辑器可以插入struts2的标签!
虽然还很是primitive,但总是好多了,。
好了,改名存盘为login.jsp。
8.
我们的action还没有呢!
好办,将HelloWorld.java拷贝粘贴一个出来Login.java:
example;
import
com.opensymphony.xwork2.ActionSupport;
class
Login
extends
ActionSupport
toIndex"
再做这样一些工作:
(1)把表单字段写出来:
private
login;
password;
(2)菜单Source->
Generate
Getters
&
Setters生成所有的getter和setter方法。
注意了啊!
看似简单,实际上内涵极为深奥:
这里的setter可是struts2“注入”调用的
(当我们执行execute()的时候,表单字段已经设置好了!
(3)修改执行函数,把表单的输入打印到控制台(console,这样打印没什么用处,只是试验一下而已):
System.out.println(login
+
:
password);
9.
好了,现在东西都有了,只要配置一下struts.xml,就可以让表单login.jsp提交给Login.action了:
拷贝一份原来的action,
修改一下:
example.Login"
10.
部署并运行看看
---hmm,
还可以,console打印出来输入的值,页面跳到index.jsp了。
但是!
好像输入表单本身的现实有些怪!
为什么呢?
看看页面源码:
怎么多出来许多table标签呢?
-----原来,默认模式下,struts2会将你的form标签自动加上table标签!
可是我们已经做好了table了,美工过了!
对策:
简单:
类似下面那样加上这样theme属性即可:
theme="
simple"
要求struts使用simple主题,它就不多事了。
11.
数据的显示:
Struts将action处理的数据(包括表单提交给action的数据)和应用(Application)范围内的数据
都存储在一个叫做“值栈”(valueStack)的地方;
有很多种方法可以从这里取出值来:
我们将struts.xml中Login.action的配置改一下,让它转到logok.jsp页面:
gotoOk"
/login/logok.jsp<
然后做一个logok.jsp,
放到WebRoot/login目录下,
其内容主要是在body标签中间,加上:
text
hr/>
property
${login}<
这样3行代码;
运行一下试试。
可以看到,三种方法都可以将输入的用户名显示出来。
12.
老革命的老问题:
汉字问题
试试输入一个汉字,显示出来的是乱码。
解决:
方法很多;
不过既然我们要整合Spring,
不如现在就使用Spring的解决模式:
13.
加入Spring支持:
在工程名上点鼠标右键,在菜单中选择“MyEclipse”->
“Add
Spring
Capabilities”;
选中所有Spring开头的包;
选择“拷贝支持包到lib目录”;
另注意:
(1)注意将applicationContext.xml放到WEB-INF/目录下;
(2)增加一个listener:
ContextLoaderListener
(3)删除掉重复的包:
asm和cglib
14.
解决汉字乱码问题:
在web.xml中,增加一个filter:
org.springframework.web.filter.CharacterEncodingFilter
并设置两个参数:
encoding=UTF-8
forceEncoding=true
设置其mapping为/*
再输入汉字试试,没问题了吧!
(没有告诉你的小秘密:
如果你还是出错误,那么在web.xml的filter配置中,
看看是否encoding
filter放到了struts
filter的后面...提到(map到)前面来!
15.
增加Hibernate支持
现在干脆将Hibernate的支持一并加入:
只需要注意几点:
选中前面三个包;
拷贝到lib目录;
使用Spring的配置文件。
16.
启动数据库。
我们使用MyEclipse自带的“德贝(Derby)”数据库:
Window->
Show->
DB
Browser中,双击MyEclipse
Derby即可启动数据库。
17.
逆向工程生成ORM对象和DAO类
在Derby数据库中,找到CLASSICCARS,
右击CUSTOMER表,选择Hibernate
逆向工程
选择Java
src
folder(我们以前已经创建了一个src/hib目录,就用它)
选中三个复选框,但不生成抽象类。
Finish!
18.
看看我们完成了什么:
hib目录下面生成了许多类,其中最重要的是CustomerDAO,我们可以通过其中的
getFromApplicationContext(ApplicationContext
ctx)
静态方法得到它的一个实例,就可以开始数据操作了!
19.
将HelloWorld.java复制一个到ListCustomers.java
然后修改其execute方法:
ApplicationContext
ct
=
WebApplicationContextUtils
.getWebApplicationContext(ServletActionContext
.getServletContext());
CustomerDAO
dao
=
CustomerDAO.getFromApplicationContext(ct);
List<
Customer>
list
dao.findAll();
int
n
list.size();
for
(int
i
0;
n;
i++)
Customer
c
list.get(i);
name
c.getCustomername();
phone
c.getPhone();
System.out.println(name
phone);
gotoCustomerList"
直接从浏览器地址栏访问一下这个action:
//localhost:
8080/ListCustomers
会发现客户的信息已经打印到console中了,只是由于没有配置导航,所以页面显示404错误。
没关系,下面fix这个问题。
遗留问题:
网上有说:
action当然不应该封装业务逻辑,但是action是controller,比如在
一个action里面可能会由几个Business
Service的方法组成一个流程,
如果仅对service的方法实现事务控制,那如果流程中某一个service
的方法出现了问题,流程中之前调用的其他service怎么回滚呢。
20.
在页面view显示结果
先在struts.xml中配置导航:
ListCustomers"
example.ListCustomers"
/login/customerlist.jsp<
上面导航要求控制跳转到customerlist.jsp,因此我们需要在login子目录中,新建一个customerlist.jsp,其内容可先从原来的页面中拷贝过来。
核心代码:
iterator
value="
list"
name:
customername"
br/>
city:
${city}<
address:
addressline1"
p>
/s:
iterator>
这里面,我们尝试了几种不同的表现方法。
首先,是<
标签。
它的作用是遍历由value指定的“集合型”对象(一般为Map或List类型);
然后是<
property>
标签,它的作用是将iterator中的对象的属性取出来。
的作用相当于调用list的getCustomername()方法。
从上面的代码中可以看出,除了使用<
之外,我们还尝试了另外两种标签方法,一是<
text>
,它可以生成一个国际化的信息文本;
一个是${city},好象是OGNL表达式语言。
细节问题以后研究。
网上说:
既然是struts2,就尽量用struts2的标签。
又说:
OGNL是主流,和<
…>
配合使用
上面的代码有一个重大问题!
实际上它的运行结果是空,不显示任何东西!
因为:
看看上面execute()方法中的一个变量声明(带下划线的那句):
这个变量(属性)就是我们在<
标签中要迭代(循环)的那个对象。
但是,迭代的对象必须是action类的属性!
而且必须有getter方法!
所以,ListCustomers.java类中必须先声明一个属性:
list;
然后,再加入一个list的getter方法:
getList(){
(而在execute()内部的list前面的类型声明需要去掉。
一个实例:
简单新闻发布
创建一个表:
表名:
MSG
字段:
id,integer,
primary
key
Au,
varchar,
40
Msg,
255
hibernate逆向工程(注意第二页要选hibernate
type,即使用hibernate数据类型,assigned)
设计流程(struts.xml):
表单页面index.jsp包含输入表单和数据显示两个部分
action类aaa.java用来接受表单数据。
Action将数据写入数据库后再回去(跳转)向index.jsp
aaa"
input"
建struts2表单,其中msg是新闻对象
ID:
msg.id"
textfield>
MSG:
msg.msg"
AU:
msg.au"
submit>
form>
在aaa.java中使用属性msg来接收表单数据。
写入数据的“三板斧”是:
1)
获取应用程序上下文
2)
获取DAO对象实例
3)
获取Session对象并启动事务处理
//1
//2
MsgDAO
MsgDAO.getFromApplicationContext(ct);
//3
Session
s
dao.getSessionFactory().openSession();
//HibernateSessionFactory.getSession();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ssh2 步骤
![提示](https://static.bdocx.com/images/bang_tan.gif)