Chinaunix首页 | 论坛 | 博客
  • 博客访问: 788266
  • 博文数量: 142
  • 博客积分: 10288
  • 博客等级: 上将
  • 技术积分: 2905
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-03 13:19
文章分类

全部博文(142)

文章存档

2019年(2)

2009年(51)

2008年(89)

分类: Java

2008-05-07 07:30:04

在项目中我们不止一次接触到这样的场景。

用户进入系统首页,如果用户没有登录,提示用户可以登录或者注册。如果用户已经登录,打印欢迎词,提供登出系统功能......

我们将一起完成以下几步。

    准备工作 1
    创建
Struts项目 1
    创建登录页面
login.jsp 3
    创建
ActionForm 4
    实现
LoginAction 7
    实现
LogoutAction 9
    运行程序
9

    下面我们就开始实现这个简单的登录系统,一步一步揭开
Struts的面纱。

准备工作


开始之前,请安装以下软件。



NetBeans 5.5 +Enterprise Pack(建议下载Sun Java EE SDK 5 tools bundle)

Sun JDK 6.0 update 1

MySQL 5.0.x+MySQL JDBC Driver 5.0.x


NetBeans内置了对Struts的支持,下面我们使用NetBeans来创建一个Struts项目。


创建Struts项目


1.启动NetBeans 5.5,准备创建一个Web项目。

2.NetBeans 主菜单中选择File->New Project

3.New Project对话框中,从Categories列表中选择Web,从Project列表中选择Web Application,点击Next,进入下一步。




4.Project Name输入项目名称MyApp,点击Next,进入下一步。






5.Frameworks中选择Struts 1.2.9支持,在Application Resource一栏中输入messages,选中Add Struts TLDS,这样会在web.xml中添加Struts最基本的taglib支持,点击Finished






现在我们已经创建一个Struts项目,接下来一起创建所需的jsp页面文件和java文件。

创建登录页面login.jsp

1.Projects窗口,展开MyApp项目。右键点击Web Pages,选择New->JSP

2.New JSP File窗口中的JSP File Name一栏输入文件名称login。点击Finish完成新建login.jsp文件。




3.在打开的login.jsp文件开关添加taglib引用。

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

登录页面要求输入username,password两个字段,把文件body标签之间的部分修改成如下:

Login Page

:

:

LoginReset



创建ActionForm

1.IDE主菜单选择File->New File

2.在弹出的New File对话框中,从Categories列表中选择Web,从File Types列表中选择Struts ActionForm Bean,点击Next,进入下一步。




3.New Struts ActionForm Bean窗口中,在Class Name中输入LoginFormPackage一栏输入com.myapp.web,点击Finish




4.清除打开的LoginForm的文件内容。

public class LoginForm extends org.apache.struts.action.ActionForm {}



5.输入两种属性username,password,属性名称要login.jsp文件中定义一致。

下面利用IDE的重构功能,生成gettersetter方法。

public class LoginForm extends org.apache.struts.action.ActionForm {

String username,password;

}

在类中间空白区域点击右键,从弹出菜单中选择Refactor->Encapsulate Fields。在弹出的Refactor窗口,保留默认,直接点击Next,预览重构效果。




在重构窗口中,点击Do Refactoring完成重构。




我们可以看到,IDE已经自动在username,password字段上添加了private关键字。

public class LoginForm extends org.apache.struts.action.ActionForm {

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;

}

}



展开Configuration Files,打开Struts配置文件struts-config.xml,可以看到,IDE已经自动注册了一个名为LoginFormActionForm

创建LoginAction

1.IDE主菜单中选择File->New File

2.New File对话框的左边Categories列表中选择Web,从右边File Types列表中选择Struts Action,点击Next,进入下一步。


    3.New Struts Action 对话框中,Class Name一栏中输入类名LoginActionPackage直接从下拉列表中选择com.myapp.webPaht一栏中输入/login,点击Next


   4.接下来,Input Source中选择/login.jspScope选择Request,点击Finish

5.execute方法中添加以下内容。

LoginForm loginForm=(LoginForm)form;

String username=loginForm.getUsername();

String password=loginForm.getPassword();

System.out.println("user loginned as #"+username+"->"+password);

request.getSession().setAttribute("username",username);

request.setAttribute("username",username);

return mapping.findForward(SUCCESS);

这里主要演示一下请求过程,暂时我们不考虑代码的逻辑实现,这些到后面会逐步完善。

6.修改Struts定义文件struts-config.xmlPath/loginAction,添加一个forward定义,指向成功页面/index.jsp



7.修改index.jsp内容,添加用户登录检测,如果用户没有登录跳转到登录页面(login.jsp),已经登录用户,提供一个登出链接(/logout)

创建LogoutAction



这个过程与Login类似,只不过这里不需要使用ActionForm了。

1.IDE主菜单中选择File->New File

2.Categories中选择Web,从File Types中选择Struts Action

3.接下来Class Name中输入LogoutActionPackage中选择com.myapp.webPath中输入/logout,点击Next,进入下一步。

4.登出功能不需要使用ActionForm,去掉Use ActionForm Bean,直接点击Finish完成。

5.execute方法内容修改成如下。

request.getSession().invalidate();

return mapping.findForward(SUCCESS);

6.修改Struts配置文件内容中名为/logoutAction定义。



运行程序

现在可以体验一下运行效果了。

1.右键点击项目结点,从菜单中选择Run Project

2.服务器启动后,会自动打开浏览器主页。




2.点击login now链接,进入登录页面。




3.输入test/test进行测试,从服务器控制台中可以看到在LoginAction中打印的信息。




现在我们回顾一下Struts项目创建过程。

使用NetBeans时创建Struts项目时,IDE自动完成了Struts的配置。

打开Projects窗口,选择刚刚创建的MyApp项目,点击Configuration Files,打开web.xml文件,可以看到以下Struts配置。

action(1)

org.apache.struts.action.ActionServlet

config(2)

/WEB-INF/struts-config.xml

debug

2

detail

2

2

action

*.do



(1)首先定义一个名为actionServlet,所有符合.do结尾的URL都由ActionServlet进行处理。

(2)action初始化参数config指定了Struts配置文件。

IDE还为你生成初始的Struts配置文件struts-config.xml文件等,并将Struts所要用的lib加入了项目。

对于一个带有输入表单的请求,需要创建输入面页面,如本例中login.jsp,相应的ActionForm类,如本例中的LoginForm,及处理请求的Action类,如本例中的LoginAction

阅读(1031) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~