在Myeclipse平台项目struts+hibernate+spring的方法
在Myeclipse平台项目struts+hibernate+spring的方法
Myeclipse平台struts+hibernate+spring项目开发示例
接:Myeclipse开发struts+hibernate+spring新手入门---环境配置
如果您按照上篇文章配置成功,可以进行开发简单的J2EE项目。
开发前准备:
1、新建项目包:如下图:
Dao:数据层;service:逻辑层;web:web展现层。
2、建立好三层架构,部署好包名。建立一个jsp文件,取名为:login.jsp
代码如下:
<% @tagliburi = " http://struts.apache.org/tags-bean " prefix = " bean " %>
<% @tagliburi = " http://struts.apache.org/tags-html " prefix = " html " %>
<% @tagliburi = " http://struts.apache.org/tags-logic " prefix = " logic " %>
<% @tagliburi = " http://struts.apache.org/tags-tiles " prefix = " tiles " %>
< HTML >
< HEAD >
< TITLE > test < TITLE >
< HEAD >
< BODY >
< html:formaction = " /login " method = " post " >
用户名: < html:textproperty = " username " size = " 15 " /> < br >
密码: < html:passwordproperty = " password " size = " 15 " />< br >
< html:submitproperty = " submit1 " style = " FONT-WEIGHT:bold;COLOR:red " >
登录
< html:submit >
< html:form >
< BODY >
< HTML >
<% @tagliburi = " http://struts.apache.org/tags-html " prefix = " html " %>
<% @tagliburi = " http://struts.apache.org/tags-logic " prefix = " logic " %>
<% @tagliburi = " http://struts.apache.org/tags-tiles " prefix = " tiles " %>
< HTML >
< HEAD >
< TITLE > test < TITLE >
< HEAD >
< BODY >
< html:formaction = " /login " method = " post " >
用户名: < html:textproperty = " username " size = " 15 " /> < br >
密码: < html:passwordproperty = " password " size = " 15 " />< br >
< html:submitproperty = " submit1 " style = " FONT-WEIGHT:bold;COLOR:red " >
登录
< html:submit >
< html:form >
< BODY >
< HTML >
3、配置struts-config.xml文件;建立action、formbean;
改配置可以自动生成,使用eclipse进行自动生成,在建立时,如下图,可直接生成对应的action类和formbean类。
1<?xmlversion="1.0"encoding="UTF-8"?>
2<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
3
4<struts-config>
5<data-sources/>
6<form-beans>
7<form-beanname="LoginForm"type="com.test.web.form.LoginForm"/>
8
9</form-beans>
10
11<global-exceptions/>
12<global-forwards/>
13<action-mappings>
14<actionattribute="LoginForm"input="/login.jsp"name="LoginForm"path="LoginAction"scope="request"type="com.test.web.action.LoginAction" validate="true">
15<forwardname="faile"path="faile.jsp"/>
16<forwardname="success"path="success.jsp"/>
17</action>
18
19</action-mappings>
20
21<message-resourcesparameter="ApplicationResources"/>
22</struts-config>
2<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
3
4<struts-config>
5<data-sources/>
6<form-beans>
7<form-beanname="LoginForm"type="com.test.web.form.LoginForm"/>
8
9</form-beans>
10
11<global-exceptions/>
12<global-forwards/>
13<action-mappings>
14<actionattribute="LoginForm"input="/login.jsp"name="LoginForm"path="LoginAction"scope="request"type="com.test.web.action.LoginAction" validate="true">
15<forwardname="faile"path="faile.jsp"/>
16<forwardname="success"path="success.jsp"/>
17</action>
18
19</action-mappings>
20
21<message-resourcesparameter="ApplicationResources"/>
22</struts-config>
对应生成的formbean如下代码所示:
1importjavax.servlet.http.HttpServletRequest;
2importorg.apache.struts.action.ActionErrors;
3importorg.apache.struts.action.ActionForm;
4importorg.apache.struts.action.ActionMapping;
5
6/**
7*MyEclipseStruts
8*Creationdate:11-10-2005
9*
10*XDocletdefinition:
11*@struts.formname="LoginForm"
12*/
13publicclassLoginFormextendsActionForm{
14
15/**passwordproperty*/
16privateStringpassword;
17
18/**usernameproperty*/
19privateStringusername;
20
21
22/**
23*Methodvalidate
24*@parammapping
25*@paramrequest
26*@returnActionErrors
27*/
28publicActionErrorsvalidate(
29ActionMappingmapping,
30HttpServletRequestrequest){
31
32/**对页面提交的元素进行验证,根据需要进行验证:在struts-config.xml中的 action-mapping配置设置validate="true"
33*以下验证才会在页面加载时生效.
34*/
35ActionErrorserrors=newActionErrors();
36if(username==null||username.equals(""))
37{
38errors.add("username",newActionMessage("username.errors"));
39returnerrors;
40}
41if(password==null||password.equals(""))
42{
43errors.add("password",newActionMessage("password.errors"));
44returnerrors;
45}
46returnerrors;
47}
48
49/**
50*Methodreset
51*@parammapping
52*@paramrequest
53*/
54publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){
55
56
57}
58
59/**
60*Returnsthepassword.
61*@returnString
62*/
63publicStringgetPassword(){
64returnpassword;
65}
66
67/**
68*Setthepassword.
69*@parampasswordThepasswordtoset
70*/
71publicvoidsetPassword(Stringpassword){
72this.password=password;
73}
74
75/**
76*Returnstheusername.
77*@returnString
78*/
79publicStringgetUsername(){
80returnusername;
81}
82
83/**
84*Settheusername.
85*@paramusernameTheusernametoset
86*/
87publicvoidsetUsername(Stringusername){
88this.username=username;
89}
90
91}
FormBean中验证后的提示需要在ApplicationResources_zh_CN.properties中配置提示错误信息.
2importorg.apache.struts.action.ActionErrors;
3importorg.apache.struts.action.ActionForm;
4importorg.apache.struts.action.ActionMapping;
5
6/**
7*MyEclipseStruts
8*Creationdate:11-10-2005
9*
10*XDocletdefinition:
11*@struts.formname="LoginForm"
12*/
13publicclassLoginFormextendsActionForm{
14
15/**passwordproperty*/
16privateStringpassword;
17
18/**usernameproperty*/
19privateStringusername;
20
21
22/**
23*Methodvalidate
24*@parammapping
25*@paramrequest
26*@returnActionErrors
27*/
28publicActionErrorsvalidate(
29ActionMappingmapping,
30HttpServletRequestrequest){
31
32/**对页面提交的元素进行验证,根据需要进行验证:在struts-config.xml中的 action-mapping配置设置validate="true"
33*以下验证才会在页面加载时生效.
34*/
35ActionErrorserrors=newActionErrors();
36if(username==null||username.equals(""))
37{
38errors.add("username",newActionMessage("username.errors"));
39returnerrors;
40}
41if(password==null||password.equals(""))
42{
43errors.add("password",newActionMessage("password.errors"));
44returnerrors;
45}
46returnerrors;
47}
48
49/**
50*Methodreset
51*@parammapping
52*@paramrequest
53*/
54publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){
55
56
57}
58
59/**
60*Returnsthepassword.
61*@returnString
62*/
63publicStringgetPassword(){
64returnpassword;
65}
66
67/**
68*Setthepassword.
69*@parampasswordThepasswordtoset
70*/
71publicvoidsetPassword(Stringpassword){
72this.password=password;
73}
74
75/**
76*Returnstheusername.
77*@returnString
78*/
79publicStringgetUsername(){
80returnusername;
81}
82
83/**
84*Settheusername.
85*@paramusernameTheusernametoset
86*/
87publicvoidsetUsername(Stringusername){
88this.username=username;
89}
90
91}
1username.null.error=/u5462/u79f0/u4e0d/u80fd/u4e3a/u7a7a
2password.null.error=/u5bc6/u7801/u4e0d/u80fd/u4e3a/u7a7a
下面我们需要对WEB展现中对Action进行配置;我们在这里主要是针对登录进行开发.因此在action中需要完成以下步骤:2password.null.error=/u5bc6/u7801/u4e0d/u80fd/u4e3a/u7a7a
1、登录验证;验证用户名是否存在。验证该用户的密码是否正确。
2、增加cookie
3、提示登录成功。
在进行Action类的编写过程中,首先我们需要考虑到对数据的操作有如下步骤。
1、验证用户名是否存在,我们在service层需要提供一个接口:
1PublicbooleanisExist(Stringuser);
来判断用户名是否存在,同时要考虑该用户名对应的密码是否正确,需要提供接口:
1PublicUserBasicInfofindByUser(Stringuser);
通过用户名来查找相关数据。在Action中,我们同时要判断根据用户查找的用户密码是否正确。如果正确,增加cookie。并返回正常登录页面。如果用户不存在、该用户输入的密码与数据库中的密码不相符合。则在配置文件ApplicationResources_zh_CN.properties中,进行设置提示报错内容。并在页面中显示。
具体Action代码如下:
1publicActionForwardexecute(
2ActionMappingmapping,
3ActionFormform,
4HttpServletRequestrequest,
5HttpServletResponseresponse){
6ActionMessageserrors=newActionMessages();
7/**
8*取得登录用户名与密码
9*/
10LoginFormlf=(LoginForm)form;
11UserBasicInfoMgruu=(UserBasicInfoMgr)getBean("userBasicInfoManager");
12/**
13*验证用户名是否存在
14*/
15if(uu.isExists(lf.getUsername()))
16{
17/**
18*验证该用户密码是否正确
19*/
20if(uu.getBasicInfoByName(lf.getUsername()).getUserpwd().equals(StringUtil.encodePassword(lf.getPassword().trim(),"MD5")))
21{
22/**
23*用户状态为新增未激活,返回登录页面。不允许登录。
24*/
25if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("1"))
26{
27errors.add("useract",newActionMessage("user.activate.error"));
28saveErrors(request,errors);
29returnmapping.findForward("relogin");
30}
31/**
32*用户状态为新增待核,返回登录页面。不允许登录。
33*/
34if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("3"))
35{
36errors.add("usercheck",newActionMessage("user.check.error"));
37saveErrors(request,errors);
38returnmapping.findForward("relogin");
39}
40/**
41*用户状态为暂时锁定,返回登录页面。不允许登录。
42*/
43if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("5"))
44{
45errors.add("userlock",newActionMessage("user.lock.error"));
46saveErrors(request,errors);
47returnmapping.findForward("relogin");
48}
49/**
50*用户状态为已删除,返回登录页面。不允许登录。
51*/
52if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("6"))
53{
54errors.add("userdel",newActionMessage("user.del.error"));
55saveErrors(request,errors);
56returnmapping.findForward("relogin");
57}
58/**
59*判断cookie时间。并保存cookie
60*/
61Cookiecookies=newCookie("username",lf.getUsername());
62cookies.setPath("/");
63if(lf.getCookieDate()!=null)
64{
65if(lf.getCookieDate().equals("0"))
66cookies.setMaxAge(-1);
67if(lf.getCookieDate().equals("1"))
68cookies.setMaxAge(0x15180);
69if(lf.getCookieDate().equals("2"))
70cookies.setMaxAge(0x278d00);
2ActionMappingmapping,
3ActionFormform,
4HttpServletRequestrequest,
5HttpServletResponseresponse){
6ActionMessageserrors=newActionMessages();
7/**
8*取得登录用户名与密码
9*/
10LoginFormlf=(LoginForm)form;
11UserBasicInfoMgruu=(UserBasicInfoMgr)getBean("userBasicInfoManager");
12/**
13*验证用户名是否存在
14*/
15if(uu.isExists(lf.getUsername()))
16{
17/**
18*验证该用户密码是否正确
19*/
20if(uu.getBasicInfoByName(lf.getUsername()).getUserpwd().equals(StringUtil.encodePassword(lf.getPassword().trim(),"MD5")))
21{
22/**
23*用户状态为新增未激活,返回登录页面。不允许登录。
24*/
25if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("1"))
26{
27errors.add("useract",newActionMessage("user.activate.error"));
28saveErrors(request,errors);
29returnmapping.findForward("relogin");
30}
31/**
32*用户状态为新增待核,返回登录页面。不允许登录。
33*/
34if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("3"))
35{
36errors.add("usercheck",newActionMessage("user.check.error"));
37saveErrors(request,errors);
38returnmapping.findForward("relogin");
39}
40/**
41*用户状态为暂时锁定,返回登录页面。不允许登录。
42*/
43if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("5"))
44{
45errors.add("userlock",newActionMessage("user.lock.error"));
46saveErrors(request,errors);
47returnmapping.findForward("relogin");
48}
49/**
50*用户状态为已删除,返回登录页面。不允许登录。
51*/
52if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("6"))
53{
54errors.add("userdel",newActionMessage("user.del.error"));
55saveErrors(request,errors);
56returnmapping.findForward("relogin");
57}
58/**
59*判断cookie时间。并保存cookie
60*/
61Cookiecookies=newCookie("username",lf.getUsername());
62cookies.setPath("/");
63if(lf.getCookieDate()!=null)
64{
65if(lf.getCookieDate().equals("0"))
66cookies.setMaxAge(-1);
67if(lf.getCookieDate().equals("1"))
68cookies.setMaxAge(0x15180);
69if(lf.getCookieDate().equals("2"))
70cookies.setMaxAge(0x278d00);