复习Struts2之简单的登录示例

由于近段时间一直在忙于ROR的开发,将近快半年没有接触J2EE了,这使得将原先本不熟的Struts2忘的一干二净。于是现静下心来重新复习一下Struts2,并将一些个人认为较精典的例子摘录下来以防以后又忘记。

好了不废话,现进入正题:

开发一个登录示例,暂不考虑连接数据库(本例基于Struts2.2.1,eclipse3.5  for J2EE为背景开发)。

一、配置Tomcat

1.打开Eclipse,选择Window->Preferences,这时打开的为首选项对话框,在其中选择Server的子选项Runtime Environments如图:

2.点击Add添加相应的服务器,这里我们采用的是Tomcat6.0.35,如图:

3.单击Next,进入Tomcat的配置对话框,在其中选择你安装的Tomcat的目录:

注意,在运行Tomcat时要用到JAVA_HOME环境变量,而在事先配置时要设置JAVA_HOME.它指定的为JDK目录,如“C:\Program Files\Java\jdk1.6.0_10”

二、创建项目

在配置好Tomcat后则现在需要新建一个项目,选择File菜单,New子菜单中的Dynamic Web Project选项,来创建一个动态的Web项目.命名为LoginDemo。

接着选择Servers选项卡,在其中右击选择New->Servers:

在弹出的对话框中选择Tomcat6.0:

选择后单击Next,选择LoginDemo单击Add将其添加入Tomcat服务器中:

单击Finish完成,则在Servers选择卡中出现了Tomcat服务器,则可通过右击来控制Tomcat的启动与停止:

这一系列动作完成后,则展开LoginDemo项目的结构如下:


三、使用Struts2框架进行开发

1.将Struts2必需的6个包:commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、freemarker-2.3.16.jar、javassist-3.7.ga.jar、ognl-3.0.jar、struts2-core-2.2.1.1.jar、xwork-core-2.2.1.1.jar放入WebContent下的lib中。也可直接放入Tomcat的lib目录下(这的区别是一个为局部有效和全局有效)。其中的javassist-3.7.ga.jar包在Struts2.2.1的lib目录下没有。这可以到它的apps目录中的struts2-blank.war压缩示例中找到了。打开它使用WinRAR软件解压.

2.修改WebContent目录下的web.xml文件,添加过滤器,将用户的请求交给Struts2框架处理:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>LoginDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 使用struts2中的拦截器来拦截用户的所有请求,使项目拥有struts2的功能 -->
  <filter>
	  <filter-name>struts2</filter-name>
	  <filter-class>
	  	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	  </filter-class>
  </filter>
  <filter-mapping>
	  <filter-name>struts2</filter-name>
	  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3.在WebContent目录下新建login.jsp文件如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 引入Struts2的标签库 -->
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<!-- 使用properties资源文件中key为loginPage的值 -->
		<title><s:text name="loginPage" /></title>
	</head>
<body>
	<!-- Struts2 form标签 -->
	<s:form action="login">
		<s:textfield name="username" key="user" />
		<s:textfield name="password" key="pass" />
		<s:submit key="login" />
	</s:form>
</body>
</html>

4.由于上面的jsp文件使用了properties资源文件,则在src目录下新建一个mess_zh_CN.properties资源文件信息如下:

这里使用了Eclipse 插件JInto,用于编辑properties文件,方便properties的多语言支持,简化使用native2ascii 命令转换,JInto官网:http://www.guh-software.de/jinto_en.html。关于JInto的安装参考下面的附录。

5.新建登录失败页面error.jsp与登录成功页面welcome.jsp页面:

error.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title><s:text name="errorPage" /></title>
</head>
<body>
	<s:text name="failTip" />
</body>
</html>

welcome.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title><s:text name="succPage" /></title>
</head>
<body>
	<s:text name="succTip">
		<s:param value="#session.user" />
	</s:text>
</body>
</html>

由于资源文件succTip key中使用了{0}占位符,故在这里使用<s:param>标签传入值替换。

6.在src中新建一个org.websoft.action.Action,它继承com.opensymphony.xwork2.ActionSupport(其实也可不继承)。

package org.websoft.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
	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() throws Exception {
		if (getUsername().equals("websoft")&&
				password.equals("123456")) {
			// 得到Session对象,并设置user的值
			ActionContext.getContext().getSession().put("user", username);
			return  SUCCESS;
		} else {
			return ERROR;
		}
	}
}

7.在src的根目录下新建struts.xml与于配置Action与页面的映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>
   <!-- 指定全局的资源文件mess -->
   <constant name="struts.custom.i18n.resources" value="mess" />
   <!-- 指定国际化编码所使用的字符集 -->
   <constant name="struts.i18n.encoding" value="UTF-8" />
   
   <package name ="default" extends="struts-default">
	   <action name="login" class="org.websoft.action.LoginAction">
		   <result name="input">/login.jsp</result>
		   <result name="success">/welcome.jsp</result>
		   <result name="error">/error.jsp</result>
	   </action>
   </package>
</struts>

上面的xml DTD声明可以在struts-core-2.2.1.1.jar包中的struts-defaults.xml中找到.因为它为上面struts.xml的父文件。

四、结果浏览

启动Tomcat,在浏览器中输入:http://localhost:8080/LoginDemo/login.jsp

不输入直接单击登录,进入错误页面:

回退输入正确的用户名与密码,进入欢迎页面:


附录:插件JInto的安装:

1.进入JInto的官网http://www.guh-software.de/jinto_en.html,下载Jinto,注意对应Eclipse的版本:

2.解压下载来的ZIP文件得到features和plugins两个目录

3.在eclipse的根目录下新建一个命为ext-links的目录,和另一个命不links的目录

4.再进入ext-links目录,在其中新建一个jinto目录

5.进入jinto目录,在其中新建一个eclipse目录

5.将解压得到的features和plugins两个目录移动到这个新建的eclipse目录下

6.回退到eclipse的根目录下进入最初新建的links目录

7.在links目录下新建一个名为jinto.link的连接文件

8.在jinto.link的第一行中写入:path=./ext-links/jinto

9.重启Eclipse,查看window->preferences->General->Editors->File Asssociations ,看是否找到 .properties,如图:

成功安装后的Eclipse目录文件结构如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值