首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2第三篇:跨入struts2世界第一步

2012-11-18 
struts2第三篇:踏入struts2世界第一步/*大家如果喜欢学习struts2可以随时来看看,欢迎大家的到来!由于我的

struts2第三篇:踏入struts2世界第一步

/*

大家如果喜欢学习struts2可以随时来看看,欢迎大家的到来!

由于我的时间有限,很多地方都不能详细的讲解,因此需要大家的理解和支持,其实学这个,我也只能做一下指导,如果大家有不懂的可以留言询问。大家互相学习学习!

我会在每一天出一篇struts2讲解。如果有事耽搁了,请大家原谅!

*/

/*

大家注意代码中标有红记的地方,是学习的重点。

*/

第一步(view编写):(login.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!-- 导入struts2的主要标签库,在struts2中去掉了很多不必要的标签,也将标签全部整合在了一起,更方便开发-->
<%
?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 'login.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>
??<s:form action="login">

<!--注意:login不是与action直接对应,而是通过struts.xml映射文件中的

name=“login”对应-->
???<s:textfield name="username" label="用户名"></s:textfield>
???<s:password name="password" label="密码"></s:password>
???<s:submit label="提交"></s:submit>

<!--在struts2中,表单提交后自动被传给action,其中的set方法会将值暂时保存在内存中,以供使用-->
??</s:form>

/*

利用标签创建提交表单,相信大家看得懂。

*/

?</body>
</html>

/*

?

*/

(result.jsp)

?<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
?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 'result.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>
??${requestScope.username}
??<br>
??${requestScope.password }
?</body>

<!--jsp中的条件表达式,获取forward传递的值,在struts2中,如没进行具体设置,默认情况是服务器端跳转,也就是所说的forword,而并不是请求跳转Redirect-->
</html>

第二步(action)

?package com.newstar.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

?/**
? *
? */
?private static final long serialVersionUID = 9038781564022152594L;
?private String username;
?private String password;
?public String getUsername() {
??return username;
?}
?public void setUsername(String username) {
??this.username = username;
?}
?public String getPassword() {
??return password;
?}
?
?public void setPassword(String password) {
??this.password = password;
?}
?public String execute(){
??if("hello".equals(username.trim())&&"world".equals(password.trim())){
???return "success";?
??}else{
???this.addFieldError("username","username or password is not right!");
???return "failer";
??}
/*

execute()只做调控作用,业务逻辑不应该在这里完成,这里因为比较简单,我才写在了这里。业务逻辑交给业务层,我以MVC模式举例。

*/
?}
?
@Override
?public void validate() {
??if(username==null||"".equals(getUsername().trim())){
???this.addFieldError("username", "username is null");
??}
??if(password==null||"".equals(getPassword().trim())){
???this.addFieldError("password", "password is null");
??}
?}

/*

这个方法是做表单验证的,是struts2中很重要的一部分,后面我会作具体介绍。相信这点代码还是难不倒大家的。

*/
}

第三步(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">

?<filter>
??<filter-name>struts2</filter-name>
??<filter-class>
???org.apache.struts2.dispatcher.FilterDispatcher
??</filter-class>
?</filter>
?<filter-mapping>
??<filter-name>struts2</filter-name>
??<url-pattern>/*</url-pattern>
?</filter-mapping>

<!--这是struts2的精华部分,大家看好了,大家记得struts1中是怎样配置的吧,这个是不是简单的多了呢。这个就是对所有用户输入数据的过滤器映射,也就是说只要用户有提交数据(不管是空值还是其他确切的值)都会首先经过struts2中的过滤器过滤,然后才传下去。就这么简单,大家感觉到乐趣了吧。。呵呵。。come on everyone!-->
?<welcome-file-list>
??<welcome-file>login.jsp</welcome-file>
?</welcome-file-list>
</web-app>

最后一步(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="struts" extends="struts-default">
????? <action name="login" import="java.util.*" pageEncoding="UTF-8"%&gt;<br/><span style='color: #ff0000;'><strong>&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;</strong></span></span></p>
<p style='text-align: left;'><span style=''><strong><span style='color: #ff0000;'>&lt;!-- 导入struts2的主要标签库,在struts2中去掉了很多不必要的标签,也将标签全部整合在了一起,更方便开发--&gt;</span></strong><br/>&lt;%<br/>?String path = request.getContextPath();<br/>?String basePath = request.getScheme() + "://"<br/>???+ request.getServerName() + ":" + request.getServerPort()<br/>???+ path + "/";<br/>%&gt;</span></p>
<p style='text-align: left;'><span style=''>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br/>&lt;html&gt;<br/>?&lt;head&gt;<br/>??&lt;base href="&lt;%=basePath%&gt;"&gt;</span></p>
<p style='text-align: left;'><span style=''>??&lt;title&gt;My JSP 'login.jsp' starting page&lt;/title&gt;</span></p>
<p style='text-align: left;'><span style=''>??&lt;meta http-equiv="pragma" content="no-cache"&gt;<br/>??&lt;meta http-equiv="cache-control" content="no-cache"&gt;<br/>??&lt;meta http-equiv="expires" content="0"&gt;<br/>??&lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt;<br/>??&lt;meta http-equiv="description" content="This is my page"&gt;<br/>??&lt;!--<br/>?&lt;link rel="stylesheet" type="text/css" href="styles.css"&gt;<br/>?--&gt;</span></p>
<p style='text-align: left;'><span style=''>?&lt;/head&gt;</span></p>
<p style='text-align: left;'><span style=''>?&lt;body&gt;<br/>??<span style='color: #ff0000;'><strong>&lt;s:form action="login"&gt;</strong></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><strong>&lt;!--注意:login不是与action直接对应,而是通过struts.xml映射文件中的 </strong></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><strong>name=“login”对应--&gt;<br/>???&lt;s:textfield name="username" label="用户名"&gt;&lt;/s:textfield&gt;<br/>???&lt;s:password name="password" label="密码"&gt;&lt;/s:password&gt;<br/>???&lt;s:submit label="提交"&gt;&lt;/s:submit&gt;</strong></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><strong>&lt;!--在struts2中,表单提交后自动被传给action,其中的set方法会将值暂时保存在内存中,以供使用--&gt;<br/>??&lt;/s:form&gt;</strong></span></span></p>
<p style='text-align: left;'><strong><span style=''>/*</span></strong></p>
<p style='text-align: left;'><strong><span style=''>利用标签创建提交表单,相信大家看得懂。</span></strong></p>
<p style='text-align: left;'><strong><span style=''>*/</span></strong></p>
<p style='text-align: left;'><span style=''>?&lt;/body&gt;<br/>&lt;/html&gt;</span></p>
<p style='text-align: left;'><span style=''>/*</span></p>
<p style='text-align: left;'>?</p>
<p style='text-align: left;'><span style=''>*/</span></p>
<p style='text-align: center;'><span style=''>(result.jsp)</span></p>
<p style='text-align: left;'><span style=''>?&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br/>&lt;%<br/>?String path = request.getContextPath();<br/>?String basePath = request.getScheme() + "://"<br/>???+ request.getServerName() + ":" + request.getServerPort()<br/>???+ path + "/";<br/>%&gt;</span></p>
<p style='text-align: left;'><span style=''>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br/>&lt;html&gt;<br/>?&lt;head&gt;<br/>??&lt;base href="&lt;%=basePath%&gt;"&gt;</span></p>
<p style='text-align: left;'><span style=''>??&lt;title&gt;My JSP 'result.jsp' starting page&lt;/title&gt;</span></p>
<p style='text-align: left;'><span style=''>??&lt;meta http-equiv="pragma" content="no-cache"&gt;<br/>??&lt;meta http-equiv="cache-control" content="no-cache"&gt;<br/>??&lt;meta http-equiv="expires" content="0"&gt;<br/>??&lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt;<br/>??&lt;meta http-equiv="description" content="This is my page"&gt;<br/>??&lt;!--<br/>?&lt;link rel="stylesheet" type="text/css" href="styles.css"&gt;<br/>?--&gt;</span></p>
<p style='text-align: left;'><span style=''>?&lt;/head&gt;</span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><strong>?&lt;body&gt;<br/>??${requestScope.username}<br/>??&lt;br&gt;<br/>??${requestScope.password }<br/>?&lt;/body&gt;</strong></span></span></p>
<p style='text-align: left;'><span style=''><strong><span style='color: #ff0000;'>&lt;!--jsp中的条件表达式,获取forward传递的值,在struts2中,如没进行具体设置,默认情况是服务器端跳转,也就是所说的forword,而并不是请求跳转Redirect--&gt;</span></strong><br/>&lt;/html&gt;</span></p>
<p style='text-align: center;'><span style=''>第二步(action)</span></p>
<p style='text-align: left;'><span style=''>?package com.newstar.struts2.action;</span></p>
<p style='text-align: left;'><span style=''>import com.opensymphony.xwork2.ActionSupport;</span></p>
<p style='text-align: left;'><span style=''>public class LoginAction extends ActionSupport {</span></p>
<p style='text-align: left;'><span style=''>?/**<br/>? * <br/>? */<br/>?private static final long serialVersionUID = 9038781564022152594L;<br/>?private String username;<br/>?private String password;<br/>?public String getUsername() {<br/>??return username;<br/>?}<br/>?public void setUsername(String username) {<br/>??this.username = username;<br/>?}<br/>?public String getPassword() {<br/>??return password;<br/>?}<br/>?<br/>?public void setPassword(String password) {<br/>??this.password = password;<br/>?}<br/>?<span style='color: #ff0000;'><strong>public String execute(){<br/>??if("hello".equals(username.trim())&amp;&amp;"world".equals(password.trim())){<br/>???return "success";?<br/>??}else{<br/>???this.addFieldError("username","username or password is not right!");<br/>???return "failer";<br/>??}<br/><span style='color: #008000;'>/*</span></strong></span></span></p>
<p style='text-align: left;'><strong><span style=''>execute()只做调控作用,业务逻辑不应该在这里完成,这里因为比较简单,我才写在了这里。业务逻辑交给业务层,我以MVC模式举例。</span></strong></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><strong><span style='color: #008000;'>*/<br/></span>?}<br/>?</strong><strong><span style='color: #ff0000;'>@Override<br/>?public void validate() {<br/>??if(username==null||"".equals(getUsername().trim())){<br/>???this.addFieldError("username", "username is null");<br/>??}<br/>??if(password==null||"".equals(getPassword().trim())){<br/>???this.addFieldError("password", "password is null");<br/>??}<br/>?}</span></strong></span></span></p>
<p style='text-align: left;'><span style=''><strong>/*</strong></span></p>
<p style='text-align: left;'><strong><span style=''>这个方法是做表单验证的,是struts2中很重要的一部分,后面我会作具体介绍。相信这点代码还是难不倒大家的。</span></strong></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><strong><span style='color: #008000;'>*/<br/></span></strong><span style='color: #333333;'>}</span></span></span></p>
<p style='text-align: center;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'>第三步(web.xml)</span></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><br/><span style='color: #000000;'>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br/>&lt;web-app version="2.5" xmlns="</span><a href='http://java.sun.com/xml/ns/javaee'><span style='color: #000000;'>http://java.sun.com/xml/ns/javaee</span></a><span style='color: #000000;'>"<br/>?xmlns:xsi="</span><a href='http://www.w3.org/2001/XMLSchema-instance'><span style='color: #000000;'>http://www.w3.org/2001/XMLSchema-instance</span></a><span style='color: #000000;'>"<br/>?xsi:schemaLocation="</span><a href='http://java.sun.com/xml/ns/javaee'><span style='color: #000000;'>http://java.sun.com/xml/ns/javaee</span></a><span style='color: #000000;'> <br/>?</span><a href='http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd'><span style='color: #000000;'>http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</span></a></span><span style='color: #000000;'>"&gt;</span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'><span style='color: #ff0000;'><strong>?&lt;filter&gt;<br/>??&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br/>??&lt;filter-class&gt;<br/>???org.apache.struts2.dispatcher.FilterDispatcher<br/>??&lt;/filter-class&gt;<br/>?&lt;/filter&gt;<br/>?&lt;filter-mapping&gt;<br/>??&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br/>??&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br/>?&lt;/filter-mapping&gt;</strong></span></span></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'><strong><span style='color: #008000;'>&lt;!--这是struts2的精华部分,大家看好了,大家记得struts1中是怎样配置的吧,这个是不是简单的多了呢。这个就是对所有用户输入数据的过滤器映射,也就是说只要用户有提交数据(不管是空值还是其他确切的值)都会首先经过struts2中的过滤器过滤,然后才传下去。就这么简单,大家感觉到乐趣了吧。。呵呵。。come on everyone!--&gt;<br/></span></strong>?&lt;welcome-file-list&gt;<br/>??&lt;welcome-file&gt;login.jsp&lt;/welcome-file&gt;<br/>?&lt;/welcome-file-list&gt;<br/>&lt;/web-app&gt;</span></span></span></p>
<p style='text-align: center;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'>最后一步(struts.xml)</span></span></span></p>
<p style='text-align: left;'><span style=''>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;</span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'>&lt;!DOCTYPE struts PUBLIC<br/>??? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br/>??? "</span><a href='http://struts.apache.org/dtds/struts-2.0.dtd'><span style='color: #000000;'>http://struts.apache.org/dtds/struts-2.0.dtd</span></a><span style='color: #000000;'>"&gt;<br/>&lt;struts&gt;<br/>?<span style='color: #ff0000;'><strong>? &lt;package name="struts" extends="struts-default"&gt;<br/>????? &lt;action name="login" uri="/struts-tags"%> 这个提示找不到标签什么的...

注意两点:
1.标签地址。
2。标签库。 12 楼 lijiang 2009-02-11   struts2入门的文章