一、 簡(jiǎn)單環(huán)境的搭建:
1、創(chuàng )建項目并加入jar包
2、配置web.xml
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring_mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、配置spring_mvc.mxl(啟動(dòng)掃描機制和配置視圖解析器)
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
B"> 二、參數傳遞 1、直接傳參: 這種方法很簡(jiǎn)單,就像上面搭建環(huán)境時(shí),在login()里面添加name、password兩參數,只需頁(yè)面傳入參數時(shí)有對應的參數名時(shí),他 就會(huì )自動(dòng)接收到對于的參數。 簡(jiǎn)單的例子: 添加一登陸頁(yè)面login.jsp和一相應頁(yè)面helloWorld.jsp login.jsp <body> <form action="<%=path%>/springController/login"> 名字<inputtype="text"name="name"><br> 密碼<inputtype="password"name="password"><br> <inputtype="submit"value="提交"> </form> </body> helloWorld.jsp <body> ${name}<br> ${password}<br> 傳參成功 </body> 此時(shí)啟動(dòng)服務(wù)器,輸入http://localhost:8080/springMVC/login.jsp 在login.jsp頁(yè)面中輸入名字和密碼,點(diǎn)擊登陸時(shí),在控制臺打印出了名 字和密碼,同時(shí)跳helloWorld.jsp頁(yè)面輸出相應的信息。 2、實(shí)體傳參 這個(gè)方法是將實(shí)體直接作為參數接收的,比如是login(User user),但這里,User實(shí)體必須有與參入值名字相同的屬性。比如建一 實(shí)體類(lèi)user public class User { private Stringname; private Stringpassword; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 然后同上面說(shuō)的,將User做為login()的參數即可 3、json前后臺傳參 Json傳參,其實(shí)就是把數據組裝成json格式,然后傳到后臺,這里修改login.jsp <scripttype = "text/javascript" src = "<%=path%>/script/jquery/src/jquery-1.4.2.min.js"></script> <scripttype="text/javascript"> $(document).ready(function(){ $("#onclick").click(function(){ var name = $("#name").val(); varpassword = $("#password").val(); varuser={name:name ,password:password}; $.ajax({ url:"/springMVC/springController/login", data:user, async:false, success:function(data){ alert(data.name); } }); }); }); </script> <body> <form> 名字<inputtype="text"name="name"id="name"><br> 密碼<inputtype="password"name="password"id="password"><br> <buttonid="onclick">提交</button> </form> </body> 這里需要注意的是引進(jìn)jquery庫,用ajax實(shí)現數據的傳遞。而引人jquery是需在spring_mvc.xml里添加<mvc:resources location="/script/" mapping="/script/**"/>這句表明了引進(jìn)的jquery不需要經(jīng)過(guò)前端控制器,location指明不去經(jīng)過(guò)前端控制器的包,mapping,指明具體哪些 文件。 varuser={name:name ,password:password};就是將數據轉成json格式。 而后臺接受參數不變,后臺SpringController代碼 @Component @RequestMapping(value="/springController") publicclass SpringControllerextends MultiActionController{ @RequestMapping(value="/login") publicvoid login(User user, HttpServletRequest request, HttpServletResponse response){ //組裝json(還有其他的方法) String result="{\"name\":\""+user.getName()+"\",\"password\":\""+user.getPassword()+"\"}"; //指明輸出json格式 response.setContentType("application/json"); try { PrintWriter out=response.getWriter(); out.print(result); } catch (IOException e) { e.printStackTrace(); } } } 這樣子,開(kāi)啟服務(wù)器,打開(kāi)login.jsp頁(yè)面輸入用戶(hù)名和密碼,點(diǎn)擊登錄后就能會(huì )進(jìn)入后臺,并在控制臺輸出用戶(hù)名和密碼。然后轉 到login.jsp頁(yè)面,并跳出一會(huì )話(huà)框,輸出用戶(hù)名和密碼。 三、中文亂碼 上面的例子,當輸入中文的時(shí)候,都會(huì )出現中文亂碼,解決方案,首先在web.xml中添加spring提供的中文亂碼過(guò)濾器 <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 這個(gè)過(guò)濾器要放在前端控制器之前,然后對要傳入的參數進(jìn)行壓碼就如login.jsp頁(yè)面var name = encodeURI($("#name").val());對name進(jìn)行壓 碼,接著(zhù)在后臺對name進(jìn)行解碼URLDecoder.decode(user.getName(),"UTF-8")。此時(shí),輸入中文,就不會(huì )出現亂碼問(wèn)題了
聯(lián)系客服