`
yanglinumber1
  • 浏览: 5660 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

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" class="com.newstar.struts2.action.LoginAction">
      <result name="input">/login.jsp</result>
      <result name="success">/result.jsp</result>
      <result name="failer">/login.jsp</result>
      </action>
   </package>

<!--这里就有点难度了,不过不用怕,后期我会向大家讲解。现在只需简单的了解就足够了package是继承于的web work,其实它的够着方式也是蛮有趣的。action内面的配置其实很简单,相信大家根据英文都能看懂了,就不说了-->
</struts>

好了,今天的就到这了,GOOD BYE!

分享到:
评论
12 楼 lijiang 2009-02-11  
struts2入门的文章
11 楼 yanglinumber1 2008-11-15  
风中落叶 写道

我这样配置怎么报错了?&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt; 这个提示找不到标签什么的...

注意两点:
1.标签地址。
2。标签库。
10 楼 yanglinumber1 2008-11-15  
注意导入的标签地址 uri="/struts-tags"
9 楼 风中落叶 2008-10-07  
我这样配置怎么报错了?<%@ taglib prefix="s" uri="/struts-tags"%> 这个提示找不到标签什么的...
8 楼 javalucky 2008-07-28  
我在做前台的时候<jsp:forward page="login.action"/>为什么找不到路径呢

但是在地趾栏打链接http://localhost:8080/login.action
或者表单都可以找到为什么呢,我用的是struts2 spring 2.5 hibernate3.2
7 楼 hellofuck 2008-07-23  
眼睛都看花了,拜托排好以后再贴上来
6 楼 javalucky 2008-07-23  
我就晕了我做的程序老找不到login.action一般是什么原因呢烦死人了
5 楼 zouzou 2008-06-25  
谢谢噢,对新手有帮助
4 楼 ray_linn 2008-06-25  
排版真难看...有什么新意吗?看来得投新手了.
3 楼 ray_linn 2008-06-25  
排版真难看...有什么新意吗?看来得投新手了.
2 楼 webworker 2008-06-25  
不错,是学习入门的好帖子.
希望后期相继的发些Struts2+Spring+Hibernate的案例.
我正在学习SSH综合开发
1 楼 348105874 2008-06-25  
<div class='quote_title'>yanglinumber1 写道</div><div class='quote_div'><p style='text-align: left;'><span style=''>/*</span></p>
<p style='text-align: left;'><span style=''><strong>大家如果喜欢学习struts2可以随时来看看,欢迎大家的到来!</strong></span></p>
<p style='text-align: left;'><strong><span style=''><span style='color: #000000;'>由于我的时间有限,很多地方都不能详细的讲解</span><span style='color: #000000;'>,因此需要大家的理解和支持,其实学这个,我也只能做一下指导,如果大家有不懂的可以留言询问。大家互相学习学习!</span></span></strong></p>
<p style='text-align: left;'><strong><span style=''>我会在每一天出一篇struts2讲解。如果有事耽搁了,请大家原谅!</span></strong></p>
<p style='text-align: left;'><span style=''>*/</span></p>
<p style='text-align: left;'><span style=''>/*</span></p>
<p><span style=''>
</span></p><p style='text-align: left;'><strong><span style=''>大家注意代码中标有红记的地方,是学习的重点。</span></strong></p>
<p/>
<p style='text-align: left;'><span style=''>*/</span></p>
<p style='text-align: center;'><span style=''>第一步(view编写):(login.jsp)</span></p>
<p style='text-align: left;'><span style=''>&lt;%@ page language="java" 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" class="com.newstar.struts2.action.LoginAction"&gt;<br/>      &lt;result name="input"&gt;/login.jsp&lt;/result&gt;<br/>      &lt;result name="success"&gt;/result.jsp&lt;/result&gt;<br/>      &lt;result name="failer"&gt;/login.jsp&lt;/result&gt;<br/>      &lt;/action&gt;<br/>   &lt;/package&gt;</strong></span></span></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'><span style='color: #008000;'><strong>&lt;!--这里就有点难度了,不过不用怕,后期我会向大家讲解。现在只需简单的了解就足够了package是继承于的web work,其实它的够着方式也是蛮有趣的。action内面的配置其实很简单,相信大家根据英文都能看懂了,就不说了--&gt;</strong></span><br/>&lt;/struts&gt;</span></span></span></p>
<p style='text-align: left;'><span style=''/></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'>&lt;!--大家互相交流,纯属学习,无商业意义,如欲转载,请联系本人</span></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'>QQ:471723842 --&gt;</span></span></span></p>
<p style='text-align: left;'><span style=''><span style='color: #ff0000;'><span style='color: #000000;'>好了,今天的就到这了,GOOD BYE!</span></span></span></p></div><br/>写的很好

相关推荐

    基于Java技术的毕业生跟踪服务系统设计与实现.pdf

    该系统的实现主要分为三个步骤:第一步,设计数据库 schema 和建立数据库连接;第二步,编写业务逻辑代码,实现用户管理、信息发布、咨询服务和交流平台等功能;第三步,测试和调试系统,确保系统的稳定性和安全性。...

    如何成为一名Java初级程序员

    成为一名Java程序员的第一步是设置你的开发环境。这通常包括安装Java Development Kit (JDK),它是Java开发的基础,提供了编译、运行和调试Java应用程序所需的所有工具。此外,集成开发环境(IDE)如Eclipse、IntelliJ...

    jav学习路线与必备技能

    1. **Java语法**:这是学习Java的第一步,包括但不限于变量、数据类型、运算符、控制流语句(如if/else、switch/case、for/while循环等)、数组等基本概念。 2. **面向对象编程(OOP)**:理解类与对象的概念,学会...

    JAVA学习步骤

    对于初学者来说,安装JDK是学习JAVA的第一步。 - **JDK组成**: - JVM (Java Virtual Machine): JAVA虚拟机,负责执行编译后的JAVA字节码。 - JRE (Java Runtime Environment): JAVA运行环境,包含JVM以及JAVA类库...

    spring快速入门教程.pdf

    《Spring快速入门教程》 Spring框架是Java开发领域中的一款重量级开源框架,以其模块化、松耦合、面向切面编程...这份快速入门教程将是你踏入Spring世界的第一步,希望你能从中受益匪浅,继续探索Spring的广阔天地。

Global site tag (gtag.js) - Google Analytics