Struts2学习笔记1

Struts2学习笔记1

 
一.
下载
struts

2.0.1

http://struts.apache.org/downloads.html,下载struts-

2.0.1
-all.zip
,这个压缩包中包括了开发struts2所需的struts2-core.jar核心包以及其他struts2所依赖的JAR文件,另外另一些struts2的演示样例程序以及一些HTMLAPI文档。

二.试用struts

2.0.1

1. 新建一个WEBproject,将struts-

2.0.1
-all.zip
压缩包中的lib文件夹下的全部jar文件复制到WEBproject的/WEB-INF/lib文件夹下。

改动WEB-INF下的web.xml文件,添�例如以下内容:

<span>Struts2学习笔记1</span>
<
filter
>

<span>Struts2学习笔记1</span>        

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

<span>Struts2学习笔记1</span>        

<
filter-class
>

<span>Struts2学习笔记1</span>            org.apache.struts2.dispatcher.FilterDispatcher
<span>Struts2学习笔记1</span>        

</
filter-class
>

<span>Struts2学习笔记1</span>    

</
filter
>

<span>Struts2学习笔记1</span>    

<
filter-mapping
>

<span>Struts2学习笔记1</span>        

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

<span>Struts2学习笔记1</span>        

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

<span>Struts2学习笔记1</span>    

</
filter-mapping
>

<span>Struts2学习笔记1</span>    

<!–
 这里是设置struts2标签,也能够不用设置,由于在struts-core.jar的META-INF文件夹下已经包括了
<span>Struts2学习笔记1</span>        这个tld文件,J2EE容器会自己主动地载入它 

–>

<span>Struts2学习笔记1</span>    

<
jsp-config
>

<span>Struts2学习笔记1</span>        

<
taglib
>

<span>Struts2学习笔记1</span>            

<
taglib-uri
>
/s
</
taglib-uri
>

<span>Struts2学习笔记1</span>            

<
taglib-location
>

<span>Struts2学习笔记1</span>                /WEB-INF/tlds/struts-tags.tld
<span>Struts2学习笔记1</span>            

</
taglib-location
>

<span>Struts2学习笔记1</span>        

</
taglib
>

<span>Struts2学习笔记1</span>    

</
jsp-config
>

web.xml中定义了一个struts2FilterDispathcerfilter,这个FilterDispatcher用来初始化struts2而且处理全部的WEB请求。


       2. 新建一个登录页面login.jsp

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>
<%

@ page language=java contentType=text/html; charset=UTF-8
<span>Struts2学习笔记1</span>    pageEncoding
=UTF-8

%>

<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>

<%

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

<span>Struts2学习笔记1</span>

<
html
>

<span>Struts2学习笔记1</span>

<
head
>

<span>Struts2学习笔记1</span>

<
title
>
登录页面
</
title
>

<span>Struts2学习笔记1</span>

</
head
>

<span>Struts2学习笔记1</span>

<
body
>

<span>Struts2学习笔记1</span>

<
s:form 
action
=”login”
>

<span>Struts2学习笔记1</span>    

<
table 
align
=”center”
>

<span>Struts2学习笔记1</span>    

<
caption
><
h3
>
用户登录
</
h3
></
caption
>

<span>Struts2学习笔记1</span>        

<
tr
>

<span>Struts2学习笔记1</span>            

<
td
><
s:textfield 
label
=”用户名”
 name
=”username”
 
/></
td
>

<span>Struts2学习笔记1</span>        

</
tr
>

<span>Struts2学习笔记1</span>        

<
tr
>

<span>Struts2学习笔记1</span>            

<
td
><
s:password 
label
=”密  码”
 name
=”password”
 
/></
td
>

<span>Struts2学习笔记1</span>        

</
tr
>

<span>Struts2学习笔记1</span>        

<
tr 
align
=”center”
>

<span>Struts2学习笔记1</span>            

<
td
><
input 
type
=”submit”
 value
=”登录”
/></
td
><
td
><
input 
type
=”reset”
 value
=”重填”
 
/></
td
>

<span>Struts2学习笔记1</span>        

</
tr
>

<span>Struts2学习笔记1</span>    

</
table
>

<span>Struts2学习笔记1</span>

</
s:form
>

<span>Struts2学习笔记1</span>

</
body
>

<span>Struts2学习笔记1</span>

</
html
>

<span>Struts2学习笔记1</span>

3.编写Action login

<span>Struts2学习笔记1</span>
package
 org.rainlife.struts2.action;
<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>

import
 com.opensymphony.xwork2.ActionSupport;
<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>

public
 
class
 LoginAction 
extends
 ActionSupport 

{
<span>Struts2学习笔记1</span>    
private String username;
<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>    
private String password;
<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>    @Override
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>    
public String execute() throws Exception {
<span>Struts2学习笔记1</span>        
if (!(getUsername().equals(rainlife))
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>                
&& !(getPassword().equals(rainlife))) {
<span>Struts2学习笔记1</span>            
return ERROR;
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>        }
 else {
<span>Struts2学习笔记1</span>            
return SUCCESS;
<span>Struts2学习笔记1</span>        }

<span>Struts2学习笔记1</span>    }

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>    
public String getPassword() {
<span>Struts2学习笔记1</span>        
return password;
<span>Struts2学习笔记1</span>    }

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>    
public void setPassword(String password) {
<span>Struts2学习笔记1</span>        
this.password = password;
<span>Struts2学习笔记1</span>    }

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>    
public String getUsername() {
<span>Struts2学习笔记1</span>        
return username;
<span>Struts2学习笔记1</span>    }

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span><span>Struts2学习笔记1</span>    
public void setUsername(String username) {
<span>Struts2学习笔记1</span>        
this.username = username;
<span>Struts2学习笔记1</span>    }

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>}


<span>Struts2学习笔记1</span>

在这个LoginAction类中,继承了ActionSupportActionSupport xwork2这个开源框架中的一个让action可以更加高速地工作的基类,它包括了action中很多可选服务的默认实现,可以让我们更加easy地自己定义一个action

在这里我们定义了usernamepassword两个属性并提供了对应的get/set方法。而且定义了一个execute()方法,该方法覆盖ActionSupport类中的execute()方法,能够看到,它仅仅是简单地返回一个字符串(”SUCCESS””INPUT”,而不像是在struts1中的返回一个ActionForward,这两个字符串也是在ActionSupport中定义的,在ActionSupport中定义了四个String属性,分别为SUCCESS,INPUT,ERROR,LOGIN

这样,我们的action就已经完毕了,但还存在一个问题,怎么样让struts2知道我们这个自己定义的action,而且能够在HTMLJSP页面中将动作提交给action呢?答案是须要配置struts.xml文件。

       4.配置struts.xml

<span>Struts2学习笔记1</span>
<?
xml version=”1.0″ encoding=”UTF-8″
?>

<span>Struts2学习笔记1</span>

<!
DOCTYPE struts PUBLIC
<span>Struts2学习笔记1</span>        “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
<span>Struts2学习笔记1</span>        “http://struts.apache.org/dtds/struts-2.0.dtd”

>

<span>Struts2学习笔记1</span>

<
struts
>

<span>Struts2学习笔记1</span>    

<
package 
name
=”struts2″
 extends
=”struts-default”
>

<span>Struts2学习笔记1</span>        

<
action 
name
=”login”
 class
=”org.rainlife.struts2.action.LoginAction”
>

<span>Struts2学习笔记1</span>            

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

<span>Struts2学习笔记1</span>            

<
result 
name
=”success”
>
/success.jsp
</
result
>
        
<span>Struts2学习笔记1</span>        

</
action
>

<span>Struts2学习笔记1</span>    

</
package
>

<span>Struts2学习笔记1</span>

</
struts
>

<span>Struts2学习笔记1</span>

在这个struts.xml配置文件里,能够发现和曾经的struts-config.xml已经全然不一样了,而在webwork的配置文件很类似。在这里,我们定义一个名name=”login”action,通过class属性指向了刚才我们创建的LoginAction类,这样,就将我们定义的action告诉给了struts2。而在HTMLJSP页面中,能够通过这个”login”这个name来将动作提交给对应的Action

假设在package中设置了namespace属性,如namespace=”/struts2”,则在JSP页面中应该将Formaction设置为”/struts2/login.action”

       5.创建error.jspsuccess.jsp

error.jsp

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>
<%

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

<span>Struts2学习笔记1</span>

<
html
>

<span>Struts2学习笔记1</span>    

<
head
>

<span>Struts2学习笔记1</span>        

<
title
>
错误页面
</
title
>

<span>Struts2学习笔记1</span>    

</
head
>

<span>Struts2学习笔记1</span>    

<
body
>

<span>Struts2学习笔记1</span>        您不能登录!
<span>Struts2学习笔记1</span>    

</
body
>

<span>Struts2学习笔记1</span>

</
html
>

<span>Struts2学习笔记1</span>

success.jsp

<span>Struts2学习笔记1</span>
<span>Struts2学习笔记1</span>
<%

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

<span>Struts2学习笔记1</span>

<
html
>

<span>Struts2学习笔记1</span>    

<
head
>

<span>Struts2学习笔记1</span>        

<
title
>
成功页面
</
title
>

<span>Struts2学习笔记1</span>    

</
head
>

<span>Struts2学习笔记1</span>    

<
body
>

<span>Struts2学习笔记1</span>        您已经登录!
<span>Struts2学习笔记1</span>    

</
body
>

<span>Struts2学习笔记1</span>

</
html
>

<span>Struts2学习笔记1</span>

Struts2会依据在LoginAction中返回的字符串(ERRORSUCCESS)来和在struts.xml<result>中的name属性所定义的字符串匹配,并跳转到对应页面。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119025.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql数据库报错1146_数据库错误代码1146 – 本地与在线

    mysql数据库报错1146_数据库错误代码1146 – 本地与在线我是这个站点的新手-请温和请:Plocalhost上的mySQL数据库适用于插入语句,但只要将数据库连接更改为服务器连接它给了我错误:错误代码1146:1146没有任何错误描述。可能是什么原因?根据我的错误捕获逻辑,连接一直成功到查询运行的一部分。在本地版本上,它就像一个魅力。有任何想法吗?数据库错误代码1146-本地与在线:::::::::::::::::::::::::::::::::…

    2022年6月1日
    67
  • java编译原理

    java编译原理4.Java编译原理1.javac是什么?(1)javac是一种编译器,能够将一种语言规范转换成另一种用语言规范,通常编译器是将便于人们理解的语言规范成机器容易理解的语言规范。(2)javac的任务就是将java源代码语言转换成jvm能够识别的语言,然后jvm将jvm语言再转化成当前机器能够识别的语言(这样使得对开发者屏蔽与机器相关的细节,并且使得语言的执行与平台无关)2.javac编译器的基本结…

    2022年5月9日
    37
  • lte频谱带宽_lte信道带宽可以配置为

    lte频谱带宽_lte信道带宽可以配置为1.频带(Band)所谓频带,指代的是一个频率的范围或者频谱的宽度,即无线解码器的最低工作频率至最高工作频率之间的范围,单位是Hz。为了方便起见,在LTE中,使用数字1-43来表示不同的频带(36101-V10.21.0版本协议),从而指代不同的频率范围。协议36101规定了目前LTE所有的频带、该频带的频率范围和LTE制式,如下图所示。需要注意的是,频带1-32的上下行频率范围是不重叠的,即上行

    2022年10月11日
    2
  • windows下如何安装Composer?

    windows下如何安装Composer?

    2021年10月20日
    115
  • 网站404页面怎么做

    网站404页面怎么做网站404页面怎么做?谈及网站404页面,诸多站长在网站运营的过程中,难以避免404页面的出现。404页面意味着网站存在死链接,当搜索引擎蜘蛛爬取此类网址的时候,应当反馈404状态吗,告知此URL网址已经失效,搜索引擎蜘蛛便会回馈到数据中心,从中清除数据。而在页面的前端,应该对访客予以信息提示,告知内容的已经不存在,优化相关搜索内容,尽可能避免降低访客体验度,由此可见,网站404页面的制作应当以两种出发点进行,即对于搜索引擎蜘蛛状态吗的正确回馈和对前端界面及内容设计出发。404网页正确设置网

    2022年7月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号