最近自己一直在學習java蛮放,了解了springmvc,并自己動手進行了配置奠宜,在網(wǎng)上搜了很多包颁,也嘗試了很多次,終于成功了挎塌,目前還不知道具體的原理是什么徘六,但是可以成功的運行。我的理解是榴都,先實現(xiàn)功能然后再去理解原理O(∩_∩)O
首先我們要對項目進行配置
向WebRoot/WEB-INF/lib這個文件夾中拖入springmvc的jar包待锈,拖入之后要看下build path 中的Libraries中是否有剛才拖入的springmvc的jar包
下面附上springmvc的jar包https://github.com/elite-kai/java
如果想要返回json格式的數(shù)據(jù),則需要向WebRoot/WEB-INF/lib這個文件夾中拖入jackson的jar包
下面說下步驟
在web.xml中的代碼如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://JAVA.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->
<servlet>
<servlet-name>springmvc</servlet-name>
<!--處理從頁面?zhèn)鬟f中文到后臺而出現(xiàn)的中文亂碼問題-->
<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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.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>
</web-app>
springmvc-servlet.xml 中的代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
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.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 自動掃描該包嘴高,使SpringMVC認為包下用了@controller注解的類是控制器 -->
<context:component-scan base-package="com.springmvc.controller" />
<mvc:default-servlet-handler />
<!-- if you use annotation you must configure following setting -->
<mvc:annotation-driven />
<!-- 定義跳轉的文件的前后綴 竿音,視圖模式配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 這里的配置我的理解是自動給后面action的方法return的字符串加上前綴和后綴,變成一個 可用的url地址 -->
<!-- value="/WEB-INF/jsp/ 這個地方的jsp代表的是文件夾拴驮,把一個jsp文件放入到jsp文件夾中春瞬,然后可以訪問,value=".jsp" /應該代表的時候訪問的文件的類型吧套啤,具體我沒有嘗試宽气,可以用html的文件嘗試一下 -->
<property name="prefix" value="/WEB-INF/views/" />
<!-- value=""之所以這么寫,我自己進行了嘗試潜沦,這樣寫可以用于返回其他類型的文件萄涯,如果你寫的是.jsp。則只能訪問jsp文件唆鸡。這么寫的話訪問html文件是沒有問題的 -->
<property name="suffix" value="" />
</bean>
<!-- 配置返回json格式數(shù)據(jù)-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
</beans>
controller中的代碼
package com.springmvc.controllers;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.springmvc.model.UserModel;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/pages")
public class EnterController {
//訪問地址是http://localhost:8080/SpringMVC/pages/hello
@RequestMapping("hello")
public void hello() {
System.out.println("進來了");
}
//訪問地址是http://localhost:8080/SpringMVC/pages/index
@RequestMapping("/index")
public String index() {
System.out.println("成功加載index");
return "index.jsp";
}
@RequestMapping("/login")
public String toHtml() {
return "Login.html";
}
//這個其實是不成功的涝影,因為myht.jsp文件沒有放在views文件夾,而是放在了jsp文件夾
//可以設置訪問多個文件夾争占,我看到網(wǎng)上有實現(xiàn)的燃逻,目前本人還沒有去嘗試
@RequestMapping("/myht")
public String myht() {
System.out.println("成功加載index");
return "myht";
}
@RequestMapping(value="/userInfo", method=RequestMethod.GET)
@ResponseBody
public String userInfo() throws IOException {
HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
UserModel model = new UserModel();
model.name = "tom";
model.age = 30;
ArrayList<Object> arrayList = new ArrayList<Object>();
arrayList.add("arr1");
arrayList.add("arr2");
arrayList.add(1);
arrayList.add(map);
arrayList.add(model);
ObjectMapper objectMapper = new ObjectMapper();
String jsonString=objectMapper.writeValueAsString(model);
return jsonString;
}
}
下面是我的項目圖
捕獲.PNG
1>SpringMVC是項目名稱
2>com.springmvc.controllers是包名
3>jackson.jar、springmvc.jar等在lib文件夾中
4>views放置頁面文件
注意
本篇文章只是介紹了配置springmvc和返回json數(shù)據(jù)臂痕,前面很多的配置信息并沒有介紹伯襟,大家需要自己百度
1> java環(huán)境的配置
2>tomcat的配置
3>@Controller、@RequestMapping("/pages")注解功能
4>如何創(chuàng)建web工程