Eclipse环境下 spring MVC 入门实例

实现一个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
<? 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 >
其中jsp-config 定义引用 c.tld标签,所以需要在 WEB-INF目录下新建tlds目录后拷贝c.tld到tlds目录下.

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 >

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;
}

}


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;
}

}


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 >
&nbsp;&nbsp; 码:
< input type ="password" name ="password" >
< br >
< p >
< input type ="submit" value ="提交" name ="B1" >
< input type ="reset" value ="重置" name ="B2" >
</ p >
</ form >
</ body >
</ html >
7.在WEB-INF下新建view目录用于存放jsp文件,loginfail.jsp和main.jsp
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 >
loginfail.jsp
<% ... @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 >

大功告成!在index.html中输入用户名:oscar 密码:123456就可以登陆了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值