实现一个spring 的登陆事例
1.在eclipse下新建动态网页工程springmvc
2.需要导入jar包.
aopalliance.jar;commons-beanutils.jar;commons-collections.jar;commons-dbcp.jar;commons-digester.jar;
commons-lang.jar;commons-logging.jar;commons-pool.jar;commons-validator.jar;freemarker.jar;jaxen-1.1-beta-7.jar;
jstl.jar;junit.jar;log4j-1.2.13.jar;servlet-api.jar;spring.jar;spring-aspects.jar;spring-mock.jar;spring-web.jar
standard.jar;xalan.jar;xercesImpl.jar;xml-apis.jar
3.修改web.xml
其中jsp-config 定义引用
c.tld标签,所以需要在
WEB-INF目录下新建tlds目录后拷贝c.tld到tlds目录下.
4.对应 < param-value > /WEB-INF/Config.xml </ param-value >在WEB-INF下新建Config.xml
5.在工程的src下新建Config.xml用到的 net.oscar.action.LoginAction和 net.oscar.action.LoginInfo的类
6.改动index.html文件(在WebContent目录下)
7.在WEB-INF下新建view目录用于存放jsp文件,loginfail.jsp和main.jsp
main.jsp
loginfail.jsp
大功告成!在index.html中输入用户名:oscar 密码:123456就可以登陆了.
1.在eclipse下新建动态网页工程springmvc
2.需要导入jar包.
aopalliance.jar;commons-beanutils.jar;commons-collections.jar;commons-dbcp.jar;commons-digester.jar;
commons-lang.jar;commons-logging.jar;commons-pool.jar;commons-validator.jar;freemarker.jar;jaxen-1.1-beta-7.jar;
jstl.jar;junit.jar;log4j-1.2.13.jar;servlet-api.jar;spring.jar;spring-aspects.jar;spring-mock.jar;spring-web.jar
standard.jar;xalan.jar;xercesImpl.jar;xml-apis.jar
3.修改web.xml
<?
xmlversion="1.0"encoding="UTF-8"
?>
< web-app id ="WebApp_ID" version ="2.4" xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< display-name >
springmvc </ display-name >
< servlet >
< servlet-name > Dispatcher </ servlet-name >
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
< init-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/Config.xml </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > Dispatcher </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
< jsp-config >
< taglib >
< taglib-uri > http://java.sun.com/jstl/core_rt </ taglib-uri >
< taglib-location > /WEB-INF/tlds/c.tld </ taglib-location >
</ taglib >
</ jsp-config >
</ web-app >
< web-app id ="WebApp_ID" version ="2.4" xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< display-name >
springmvc </ display-name >
< servlet >
< servlet-name > Dispatcher </ servlet-name >
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
< init-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/Config.xml </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > Dispatcher </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
< jsp-config >
< taglib >
< taglib-uri > http://java.sun.com/jstl/core_rt </ taglib-uri >
< taglib-location > /WEB-INF/tlds/c.tld </ taglib-location >
</ taglib >
</ jsp-config >
</ web-app >
4.对应 < param-value > /WEB-INF/Config.xml </ param-value >在WEB-INF下新建Config.xml
<?
xmlversion="1.0"encoding="UTF-8"
?>
<! DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd" >
< beans >
< bean id ="viewResolver"
class ="org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name ="viewClass" >
< value >
org.springframework.web.servlet.view.JstlView
</ value >
</ property >
< property name ="prefix" >
< value > /WEB-INF/view/ </ value >
</ property >
< property name ="suffix" >
< value > .ftl </ value >
</ property >
</ bean >
< bean id ="urlMapping"
class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
< property name ="mappings" >
< props >
< prop key ="/login.do" > LoginAction </ prop >
</ props >
</ property >
</ bean >
< bean id ="LoginAction"
class ="net.oscar.action.LoginAction" >
< property name ="commandClass" >
< value > net.oscar.action.LoginInfo </ value >
</ property >
< property name ="fail_view" >
< value > loginfail </ value >
</ property >
< property name ="success_view" >
< value > main </ value >
</ property >
</ bean >
</ beans >
<! DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd" >
< beans >
< bean id ="viewResolver"
class ="org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name ="viewClass" >
< value >
org.springframework.web.servlet.view.JstlView
</ value >
</ property >
< property name ="prefix" >
< value > /WEB-INF/view/ </ value >
</ property >
< property name ="suffix" >
< value > .ftl </ value >
</ property >
</ bean >
< bean id ="urlMapping"
class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
< property name ="mappings" >
< props >
< prop key ="/login.do" > LoginAction </ prop >
</ props >
</ property >
</ bean >
< bean id ="LoginAction"
class ="net.oscar.action.LoginAction" >
< property name ="commandClass" >
< value > net.oscar.action.LoginInfo </ value >
</ property >
< property name ="fail_view" >
< value > loginfail </ value >
</ property >
< property name ="success_view" >
< value > main </ value >
</ property >
</ bean >
</ beans >
5.在工程的src下新建Config.xml用到的 net.oscar.action.LoginAction和 net.oscar.action.LoginInfo的类
package
net.oscar.action;
public class LoginInfo ... {
privateStringusername;
privateStringpassword;
publicStringgetUsername()...{
returnusername;
}
publicvoidsetUsername(Stringusername)...{
this.username=username;
}
publicStringgetPassword()...{
returnpassword;
}
publicvoidsetPassword(Stringpassword)...{
this.password=password;
}
}
public class LoginInfo ... {
privateStringusername;
privateStringpassword;
publicStringgetUsername()...{
returnusername;
}
publicvoidsetUsername(Stringusername)...{
this.username=username;
}
publicStringgetPassword()...{
returnpassword;
}
publicvoidsetPassword(Stringpassword)...{
this.password=password;
}
}
package
net.oscar.action;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class LoginAction extends SimpleFormController ... {
privateStringfail_view;
privateStringsuccess_view;
protectedModelAndViewonSubmit(Objectcmd,BindExceptionex)throwsException...{
LoginInfologinInfo=(LoginInfo)cmd;
if(login(loginInfo)==0)...{
HashMapresult_map=newHashMap();
result_map.put("logininfo",loginInfo);
ListmsgList=newLinkedList();
msgList.add("msg1");
msgList.add("msg2");
msgList.add("msg3");
result_map.put("messages",msgList);
returnnewModelAndView(this.getSuccess_view(),result_map);
}else...{
returnnewModelAndView(this.getFail_view());
}
}
privateintlogin(LoginInfologinInfo)...{
if("oscar".equalsIgnoreCase(loginInfo.getUsername())&&"123456".equals(loginInfo.getPassword()))...{
return0;
}
return1;
}
publicStringgetFail_view()...{
returnfail_view;
}
publicvoidsetFail_view(Stringfail_view)...{
this.fail_view=fail_view;
}
publicStringgetSuccess_view()...{
returnsuccess_view;
}
publicvoidsetSuccess_view(Stringsuccess_view)...{
this.success_view=success_view;
}
}
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class LoginAction extends SimpleFormController ... {
privateStringfail_view;
privateStringsuccess_view;
protectedModelAndViewonSubmit(Objectcmd,BindExceptionex)throwsException...{
LoginInfologinInfo=(LoginInfo)cmd;
if(login(loginInfo)==0)...{
HashMapresult_map=newHashMap();
result_map.put("logininfo",loginInfo);
ListmsgList=newLinkedList();
msgList.add("msg1");
msgList.add("msg2");
msgList.add("msg3");
result_map.put("messages",msgList);
returnnewModelAndView(this.getSuccess_view(),result_map);
}else...{
returnnewModelAndView(this.getFail_view());
}
}
privateintlogin(LoginInfologinInfo)...{
if("oscar".equalsIgnoreCase(loginInfo.getUsername())&&"123456".equals(loginInfo.getPassword()))...{
return0;
}
return1;
}
publicStringgetFail_view()...{
returnfail_view;
}
publicvoidsetFail_view(Stringfail_view)...{
this.fail_view=fail_view;
}
publicStringgetSuccess_view()...{
returnsuccess_view;
}
publicvoidsetSuccess_view(Stringsuccess_view)...{
this.success_view=success_view;
}
}
6.改动index.html文件(在WebContent目录下)
<!
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"
>
< html >
< head >
< title > Inserttitlehere </ title >
</ head >
< body >
< form method ="post" action ="login.do" >
< p align ="center" > 登录 </ p >
< br >
用户名:
< input type ="text" name ="username" >
< br >
密 码:
< input type ="password" name ="password" >
< br >
< p >
< input type ="submit" value ="提交" name ="B1" >
< input type ="reset" value ="重置" name ="B2" >
</ p >
</ form >
</ body >
</ html >
< html >
< head >
< title > Inserttitlehere </ title >
</ head >
< body >
< form method ="post" action ="login.do" >
< p align ="center" > 登录 </ p >
< br >
用户名:
< input type ="text" name ="username" >
< br >
密 码:
< input type ="password" name ="password" >
< br >
< p >
< input type ="submit" value ="提交" name ="B1" >
< input type ="reset" value ="重置" name ="B2" >
</ p >
</ form >
</ body >
</ html >
main.jsp
<%
...
@pagelanguage="java"contentType="text/html;charset=ISO-8859-1"
pageEncoding="ISO-8859-1" %>
<% ... @taglibprefix="c"uri="http://java.sun.com/jstl/core_rt" %>
< html >
< head >
</ head >
< body >
< p > LoginSuccess!!! </ p >
< p > CurrentUser:
< c:out value ="${logininfo.username}" />< br >
</ p >
< p > YourCurrentmessages: </ p >
< c:forEach items ="${messages}"
var ="item"
begin ="0"
end ="9"
step ="1"
varStatus ="var" >
< c:if test ="${var.index%2==0}" >
*
</ c:if >
${item} < br >
</ c:forEach >
</ body >
</ html >
pageEncoding="ISO-8859-1" %>
<% ... @taglibprefix="c"uri="http://java.sun.com/jstl/core_rt" %>
< html >
< head >
</ head >
< body >
< p > LoginSuccess!!! </ p >
< p > CurrentUser:
< c:out value ="${logininfo.username}" />< br >
</ p >
< p > YourCurrentmessages: </ p >
< c:forEach items ="${messages}"
var ="item"
begin ="0"
end ="9"
step ="1"
varStatus ="var" >
< c:if test ="${var.index%2==0}" >
*
</ c:if >
${item} < br >
</ c:forEach >
</ body >
</ html >
<%
...
@pagelanguage="java"contentType="text/html;charset=ISO-8859-1"
pageEncoding="ISO-8859-1" %>
<! DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html;charset=ISO-8859-1" >
< title > Inserttitlehere </ title >
</ head >
< body >
Loginfail!
</ body >
</ html >
pageEncoding="ISO-8859-1" %>
<! DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html;charset=ISO-8859-1" >
< title > Inserttitlehere </ title >
</ head >
< body >
Loginfail!
</ body >
</ html >
大功告成!在index.html中输入用户名:oscar 密码:123456就可以登陆了.