今天看了下Struts框架的概述,就用myeclispe试着动手开发了一个简单的用户登录程序。应用程序包括2个jsp文件、一个ActionForm、一个Action以及其它。是:login.jsp(用户登录及错误提示页面),loginSuccess.jsp(提示登录成功页面),LoginForm.java(ActionForm,存放用户提交信息),LoginAction.java(Action,简单的处理用户登录事件)。
下面开始动手吧。。。
首先我们先建立一个j2ee的web project
然后给这个项目添加Struts框架必要的文件.在我们项目名上点击右键,选择MyEclipes --> Add Struts Capabilities...弹出对话框图2:
其中Struts config path就是我们的struts配置文件,URL pattern我们选择*.do,Default application resource为我们默认的资源文件地方,你可以选择它的存储位置,我们在这里保持默认。点击Finish后,项目结构类似于图3:
然后修改/WEB-INF/web.xml文件,为其添加标签库。将下面代码添加至 </webapp> 上面:
<jsp-config>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</jsp-config>
完成后,打开struts-config.xml文件,点击这个界面左下角的Design进入可视化设计界面。我们先建立loginSuccess.jsp文件.点击Palette面版上的创建JSP文件图标,弹出创建JSP文件面板。图4:
完成后,struts-config.xml文件自动被更新,可视化界在上也出现了刚新建的JSP模块。新建的jsp文件也打开了。覆盖所有的<%@ taglib ...... 为我们开始在/WEB-INF/web.xml中定义的:
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
然后在<body></body>中添加:
Hello <bean:write name="userName" scope="request" /> .
这里将request中的属性userName输出在页面上,所以等下我们在loginAction中,登录成功后要设置一个相关属性。
下面来开始我们最后三个文件的设计吧。在Struts-config.xml的Design模式中,在画版的空白区域点右键,选择New --> New Form, Action and JSP 弹出ActionForm的选项面板,我们按图上输入相关值,图5:
因为我们这只是简单的演示一个登录片段,所以不用验证用户信息是否合法,所以将 Option Details的method选项卡的新建方法去掉,如图:
接下来选择 Optional Details的JSP选项卡,我们选中Create JSP form? 这一步myeclipse将为我们创建一个简单的与用户交互的登录页面:
点Next,进入Action选项面板.将Option Details的Form选项卡中Validate Form取消选择,如图:
点击Finish完成。在Struts-config.xml的Design中,可以看到图所示:
最后,简单的修改一下login.jsp,将所有<%@ taglib ...%>替换为:
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
修改LoginAction如下所示:
/***//**
*Methodexecute
*@parammapping
*@paramform
*@paramrequest
*@paramresponse
*@returnActionForward
*/
publicActionForwardexecute(
ActionMappingmapping,
ActionFormform,
HttpServletRequestrequest,
HttpServletResponseresponse)
{
LoginFormloginForm=(LoginForm)form;
//TODOAuto-generatedmethodstub
Stringname=loginForm.getUserName();
Stringpassword=loginForm.getPassword();
DBbasemyDb=newDBbase();
ResultSetrs=null;
intresult=0;
Stringsql="selectcount(*)ascountfromuserswhereusername='"+name+"'andpassword='"+password+"'";
try
{
rs=myDb.executeQuery(sql);
if(rs.next())
{
result=rs.getInt("count");
}
}
catch(SQLExceptionex)
{
ex.printStackTrace();
}
if(result>0)
{
request.setAttribute("userName",name);
returnmapping.findForward("success");
}
returnmapping.findForward("failure");
}
加入一个数据访问javaBean:
packagecom.vitamin.DataAccess;
importjava.sql.*;
publicclassDBbase{
StringsDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
StringsConnstr="jdbc:odbc:myDB";
Connectionconnect=null;
ResultSetrs=null;
Statementstmt=null;
publicDBbase()
{
try
{
Class.forName(sDBDriver);
}
catch(ClassNotFoundExceptionex)
{
System.err.println(ex.getMessage());
}
}
publicResultSetexecuteQuery(Stringsql)
{
try
{
this.connect=DriverManager.getConnection(sConnstr);
this.stmt=this.connect.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLExceptionex)
{
System.err.println(ex.getMessage());
}
returnrs;
}
publicintexecuteUpdate(Stringsql)
{
intresult=0;
try
{
this.connect=DriverManager.getConnection(sConnstr);
this.stmt=this.connect.createStatement();
result=stmt.executeUpdate(sql);
}
catch(SQLExceptionex)
{
System.err.println(ex.getMessage());
}
returnresult;
}
}
好了,完成!!用浏览器上打开:http://localhost:8080/HelloStruts/login.jsp,就可以了
哦,出了问题了,中文输入不支持,呵呵,想点办法来让个一劳永逸吧。。
Servlet2.3开始增加了事件监听和过滤器,管道和过滤器是为处理数据流的系统而提供的一种模式,它由管道和过滤器组成,每个处理步骤都封装在一个过滤器组件中,数据通过相邻过滤器之间的管道进行传输,每个过滤器可以单独修改,功能单一,并且顺序可以进行配置。
在Web.xml中修改如下:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.vitamin.util.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
新加一个类EncodingFilter:
packagecom.vitamin.util;
importjavax.servlet.Filter;
importjavax.servlet.FilterConfig;
importjavax.servlet.FilterChain;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjava.io.IOException;
publicclassEncodingFilterimplementsFilter
{
privateFilterConfigconfig=null;
privateStringtargetEncoding="GBK";
publicEncodingFilter()
{
super();
//TODO自动生成构造函数存根
}
publicvoidinit(FilterConfigconfig)throwsServletException
{
//TODO自动生成方法存根
this.config=config;
this.targetEncoding=config.getInitParameter("encoding");//从配置中读取初始化参数
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException
{
//TODO自动生成方法存根
System.out.println("目标编码:"+this.targetEncoding);
request.setCharacterEncoding(this.targetEncoding);
response.setCharacterEncoding(this.targetEncoding);
chain.doFilter(request,response);
}
publicvoiddestroy()
{
//TODO自动生成方法存根
this.config=null;
this.targetEncoding=null;
}
}
这样就可以很好地解决中文乱码的问题了。。。
分享到:
相关推荐
MyEclipse开发Struts+Hibernate应用,图文示例
Myeclipse开发struts+hibernate+spring新手入门---环境配置----项目开发示例 Myeclipse开发struts+hibernate+spring小记 开发前准备工作: 1、下载eclipse3.1版本 下载地址: 2、下载Myeclipse插件 下载地址: 3...
使用MyEclipse6开发Struts+Spring应用程序示例代码工程
使用myeclipse集成struts,hibernate,spring的一个示例程序
我上传的所有资源都是免费的,欢迎愿意学习的同学下载。另,所传资源皆为网上收集,版权问题盖不负责
用myeclipse开发spring和struts2整合的入门示例
jsp+struts+hibernate开发示例。 最普通的增加、删除、更新操作。 最适合新人学习MVC模式(没有添加spring)。
它是关于myeclipse的struts整合hibernate登录示例,是一个非常经典的用例!
SSH整合+struts convention插件小示例 全程使用注解扫包,无struts action的配置文件,无Hibernate配置文件, Spring自动扫包来获取bean 数据库内容太简单,不再上传。 只是一个小实例。 请用MyEclipse导入项目。 我...
用struts 1.x 开发的一个简单的登录实例
自己做的一个Myeclipse Oracle9i hibernate3.2 Spring2.5 Struts2, 包删除了, 自己在myeclipse里添加就行了, 已经调试成功. 建表语句: create table CUSTOMER ( ID INTEGER not null, USERNAME VARCHAR2(12), ...
struts验证源文件,工程文件源文件,不含jar包(用MyEclipse导入即可)
struts 上传文件的示例,是一个myeclipse工程
该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的JavaEE。 操作步骤如下: 1. 下载并解压之后,使用MyEclipse导入工程 2. 找到demo目录中的.sql数据库...
在这个教程中我们将使用 MyEclipse Enterprise Workbench 来开发和测试一个简单的 Struts 示例程序. 您可以不需要事先了解 Struts 或者 MyEclipse 的相关知识.
是两个eclipse工程文件 eclipse3.2+myeclipse5.0 是初学者学习struts和ant的入门小示例
现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过...
现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过...
在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示...