爱睡觉的小耗子
——等待飘雪的日子...努力,努力,再努力!
posts - 9,  comments - 33,  trackbacks - 0

   刚接触struts不久,公司又要我学spring,然后把两者结合起来用。于是我在网上找了很多的有关struts+spring的例子,但基本上都是struts+spring+hibernate的,而我们公司不用hibernate。后来,我就在struts的基本上,再学习怎么把spring加入的例子,然后根据它的原理重新编写一本书上用struts实现的例子。

一、运行环境

1eclipse-SDK-3.2

2MyEclipse GA5.0

3apache-tomcat-5.5.20

4Strust1.2

5Spring1.2

二、该工程所需文件

1index.jsp

2login.jsp

3reinput_blank.jsp

4reinput_error.jsp

5success.jsp

6LoginActio.java

7LoginForm.java

8struts-config.xml

9applicationContext.xml

三、步骤

1、建工程

   创建一个名为Welcome_SSWeb Project

   File -> New -> Project -> Web Project , “next” Project Name”Welcome_SS” ,“finish”;

2、导入struts

   选择Welcome_SS工程,右键->Myeclipse (或选菜单栏上Myeclipse) -> Add struts Capabilities……,选择struts1.2,然后finish;

3、导入spring

   选择Welcome_SS工程,右键->Myeclipse (或选菜单栏上Myeclipse) -> Add spring Capabilities……,在默认基础上,再选择Spring 1.2 AOP Libraries - <MyEclipse-Library>Spring 1.2 Web Libraries - <MyEclipse-Library>,然后finish;

(为什么要选这两个,我也还没有弄清楚)

注:可能还要在lib文件夹下加几个spring包,
spring.jar,
spring-1.2.6.jar,
spring-aop.jar,
spring-beans.jar,
spring-context.jar,
spring-core.jar,
spring-orm.jar,
spring-remoting.jar,
spring-support.jar,
spring-web.jar,
spring-webmvc.jar

4、编写代码(页面及其所需的类)

Ø         index.jsp

选择Welcome_SS工程下的WebRoot -> New -> JSP,取名为index.jspFinish;

 输入以下代码

 1 
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4   <head>   
 5     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
 6   </head>  
 7   <body><div align="center"> 
 8     Welcome here!<br>.<href="login.jsp">sign in</a></div> 
 9   </body>
10 </html>
11 

Ø         login.jsp

选择Welcome_SS工程下的WebRoot -> New -> JSP,取名为login.jspFinish;

 输入以下代码

 1 <%@ page contentType="text/html;charset=gb2312"%>
 2 <%@ page import="java.util.*,java.sql.*,java.text.*,java.io.*"%>
 3 
 4 <html>
 5 <body>
 6 <div align="center"><form name="form1" method="post" action="login.do"> 
 7 Welcome Here! <br><br>
 8 username:<input type="text" name="username"><br> 
 9 password:<input type="text" name="password"><br> 
10 <input type="submit" name="submit1" value="submit">
11 <input type="reset"  name="submit2" value="reset" onclick="deleteAllMessage()"><br>
12 </form></div>
13 </body>
14 </html>

Ø         reinput_blank.jsp

选择Welcome_SS工程下的WebRoot -> New -> JSP,取名为reinput_blank.jspFinish;

 输入以下代码

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5     <body>
 6    <div align="center"><form name="form1" method="post" action="login.do"><font color="#ff0000">*用户名和密码都不能为空!</font><br><br>
 7     username:<input type="text" name="username" > <br>
 8     password:<input type="text" name="password" > <br>
 9     <input type="submit" name="submit1" value="submit">
10     <input type="reset" name="submit2" value="reset" onclick="deleteAllMessage()">
11     </form></div>
12     </body> 
13 </html>
14 

Ø         reinput_error.jsp

选择Welcome_SS工程下的WebRoot -> New -> JSP,取名为reinput_error.jspFinish;

 输入以下代码

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5     <body>
 6    <div align="center"><form name="form1" method="post" action="login.do"><font color="#ff0000">*用户名或密码不正确!</font><br><br>
 7     username:<input type="text" name="username" > <br>
 8     password:<input type="text" name="password" > <br>
 9     <input type="submit" name="submit1" value="submit">
10     <input type="reset" name="submit2" value="reset" onclick="deleteAllMessage()">
11     </form></div>
12     </body> 
13 </html>
14 

Ø         success.jsp

选择Welcome_SS工程下的WebRoot -> New -> JSP,取名为success.jspFinish;

 输入以下代码
 1 <%@ page language="java"  pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>   
 6     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
 7   </head>
 8   <body>
 9     <%=request.getAttribute("message")%>!<br>
10     .<href="login.jsp">sign in</a><br>
11     .<href="index.jsp">sign out</a>  
12   </body>
13 </html>
14 
15 
Ø         LoginAction.jsp

选择Welcome_SS工程下的src -> com -> yourcompany -> struts下,New->files :action,再在这个文件夹下New->Java,取名为LoginAction.javaFinish;

 输入以下代码

 1 
 2 package com.yourcompany.struts.action;
 3 
 4 import java.util.Locale;
 5 
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import javax.servlet.http.HttpSession;
 9 
10 import org.apache.struts.action.Action;
11 import org.apache.struts.action.ActionForm;
12 import org.apache.struts.action.ActionForward;
13 import org.apache.struts.action.ActionMapping;
14 import org.apache.struts.util.MessageResources;
15 
16 import com.yourcompany.struts.form.LoginForm;
17 
18 public class LoginAction extends Action {
19     
20     private String message;
21     
22     public String getMessage() {
23         return message;
24     }
25 
26     public void setMessage(String message) {
27         this.message = message;
28     }    
29     
30     public ActionForward execute(ActionMapping mapping,
31             ActionForm form,
32             HttpServletRequest request,
33             HttpServletResponse response)            
34         LoginForm userform = (LoginForm) form;        
35         if(userform.getUsername().equals("")||(userform.getPassword().equals(""))){
36             return mapping.findForward("reinput_blank");
37         }
38         else if(userform.getUsername().equals("success")&&(userform.getPassword().equals("success"))){
39             request.setAttribute("message",getMessage()+userform.getUsername());
40             return mapping.findForward("success");
41         }
42             else{
43                 return mapping.findForward("reinput_error");        
44             }
45         }
46     }
47 

Ø         LoginForm.jsp

选择Welcome_SS工程下的src -> com -> yourcompany -> struts下,New->files :form,再在这个文件夹下New->Java,取名为LoginAction.javaFinish;

 输入以下代码

 1 
 2 package com.yourcompany.struts.form;
 3 
 4 import javax.servlet.http.HttpServletRequest;
 5 import org.apache.struts.action.ActionErrors;
 6 import org.apache.struts.action.ActionForm;
 7 import org.apache.struts.action.ActionMapping;
 8 
 9 public class LoginForm extends ActionForm {
10 
11     /** username property */
12     private String username;
13     private String password;
14     public String getPassword() {
15         return password;
16     }
17     public void setPassword(String password) {
18         this.password = password;
19     }
20     public String getUsername() {
21         return username;
22     }
23     public void setUsername(String username) {
24         this.username = username;
25     } 
26 }

5、根据前一步的代码,进行配置文件的编写(struts-config.xmlapplicationContext.xml

选择Welcome_SS工程下的WebRoot -> WEB-INF -> struts-config.xml

输入下面代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
 3 
 4 <struts-config>
 5   <data-sources />
 6   <form-beans >
 7     <form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />
 8   </form-beans>
 9 
10   <global-exceptions />
11   <global-forwards />
12   <action-mappings >
13     <action
14       attribute="loginForm"
15       input="/login.jsp"
16       name="loginForm"
17       path="/login"
18       scope="request"
19       type="org.springframework.web.struts.DelegatingActionProxy">
20       <forward name="success" path="/success.jsp" />
21       <forward name="reinput_blank" path="/reinput_blank.jsp"/>
22       <forward name="reinput_error" path="/reinput_error.jsp"/>
23     </action>
24 
25   </action-mappings>
26 
27   <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
28   
29   <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
30 <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
31 </plug-in>
32   
33 </struts-config>
34 
35 

选择Welcome_SS工程下的src -> applicationContext.xml

输入下面代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 3 <beans>
 4   <bean name="/login" class="com.yourcompany.struts.action.LoginAction">
 5   <property name="message">
 6   <value>Welcome_</value>
 7   </property>
 8   </bean>
 9 </beans>
10 

6Web Service(这里即Tomcat)布署及启动

(全面的可以参照我的另一篇随笔:Myeclipse中Tomcat的两种布署方式)

a.apache-tomcat-5.5.20"conf下,找到server.xml,打开,在</Host>前面添加一句

 <Context path="/wess" debug="0" docBase="C:\Documents and   Settings\tt\workspace\Welcome_SS\WebRoot" reloadable="true"></Context>

注:C:\Documents and Settings\tt\workspace\Welcome_SS是该工程的存储路径。

b.Myeclipse中的工具栏上找到一个像机箱似形状的按钮,点击,则打开服务器Tomcat.

7、运行
IE 浏览器里输入http://localhost:8080/wess,即可运行!成功登陆的条件是用户名和密码都为success的时候。

posted on 2007-11-23 10:41 Harriet 阅读(4304) 评论(9)  编辑  收藏 所属分类: Struts+Spring

FeedBack:
# re: 自己编写的一个用struts+spring实现的登陆实例
2007-11-23 17:10 | 支持
我运行成功的,但是spring里面的message没有注射成功,页面显示是nullsuccess! 楼主能帮忙看一下么?  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2007-11-23 17:20 | Harriet
@支持
你看一下你的LoginAction.jsp有没有错?LoginAction.jsp里定义的message就是用来从applicationContext.xml中的bean取参的。
applicationContext.xml中的property name值要为message
你都对了吗  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2007-11-23 17:32 | 支持
这些都对了,并且自己写个类读取applicationContext.xml的内容也没有问题
public static void main(String args[]) {
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("Test/applicationContext.xml"));
LoginAction login = (LoginAction) factory.getBean("login");
System.out.println(login.getMessage() + "");
}
以前写的spring都是用main运行的,从来没有在网页上运行过,这回有问题了  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2007-11-23 17:43 | Harriet
@支持
如果你是原封不动地copy代码过去的话,应该是没问题的。
如果还有改的话,呵呵,我是struts和spring的初学者,可能有点难度哦~一起探讨吧  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2008-03-24 09:18 | 石雨亭
http://localhost:8080/wess/login
HTTP Status 404 - /wess/login

--------------------------------------------------------------------------------

type Status report

message /wess/login

description The requested resource (/wess/login) is not available.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.17  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2008-03-24 11:56 | 石雨亭
aaaaaa  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2008-03-24 11:59 | 石雨亭
有没有原文件啊!我这里怎么调都是错的.555~~~~~~~~~`404错误,500错误!  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例[未登录]
2008-03-25 16:05 | 1
楼主不觉得Spring没有什么用吗?  回复  更多评论
  
# re: 自己编写的一个用struts+spring实现的登陆实例
2008-09-06 07:08 | msn:gmingsoft04@hotmail.com
<input type="reset" name="submit2" value="reset" onclick="deleteAllMessage()">
请问下:onclick="deleteAllMessage(),这个函数在哪里定义的?
好象你的原意是写个JavaScript,来清空输入拦吧  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

公 告

心要沉下去,思绪才会浮上来,水平也就上来了


<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

相册

搜索

  •  

积分与排名

  • 积分 - 86046
  • 排名 - 666

最新评论

阅读排行榜

评论排行榜