《一配置webxml》**************************WEBXML*************************
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0">
<display-name>demotextSpringMVC</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!--註冊 -->
<!--使用springMVC的時候核心servlet -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--如果不配置一下信息,會有個默認配置執行、/web/info/servlet名-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</init-param>
</servlet>
<!--配置路徑 -->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<!--有兩種寫法 *.action / -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--進行亂碼處理 -->
<filter>
<filter-name>codedeal</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>codedeal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
《二control的書寫》********************control**********************
packagecom.libo.controller;
importjava.io.File;
importjava.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.google.gson.JsonObject;
import com.libo.po.User;
@Controller
//這個類就變成控制器 value="/"相當於一個虛擬路徑
public classTestController {
@RequestMapping("/test")
public String test() {
System.out.println("執行了test");
//默認採用的是轉發
return "/index.jsp";
}
@RequestMapping("/te/test1")
public String test1() {
System.out.println("執行了test1");
// redirect:既可以重定向頁面也可以重定向action
return"redirect:/index.jsp";
// return"redirect:/query.action";
}
//向頁面傳值方式1
@RequestMapping("query")
public String query(Model m) {
// Model StringMVC提供必須確保Model m最後位置的形參
//這個值從業務邏輯層拿來的值
String name = "張三11";
String pwd = "12311";
m.addAttribute("name",name);
m.addAttribute("pwd",pwd);
return "/index.jsp";
}
//向頁面傳值方式二
@RequestMapping("query1")
public ModelAndView query1() {
// Model StringMVC提供必須確保Model m最後位置的形參
//這個值從業務邏輯層拿來的值
String name = "張三";
String pwd = "123";
ModelAndView mv = newModelAndView();
//構造方法的方式
// ModelAndView mv = newModelAndView("index.jsp");
mv.addObject("name",name);
mv.addObject("pwd",pwd);
//參數可以是一個頁面也可以是一個 action
mv.setViewName("/query.action");
return mv;
}
//從頁面取值
@RequestMapping("save")
public String save(String username, intuserpwd, Model m) {
// Model StringMVC提供必須確保Model m最後位置的形參
//這個值從業務邏輯層拿來的值
String name = username;
int pwd = userpwd;
System.out.println(username +":" + userpwd);
m.addAttribute("name",name);
m.addAttribute("pwd",pwd);
return "/index.jsp";
}
//從頁面取值
@RequestMapping("save1")
public String save1(User user, Model m) {
// Model StringMVC提供必須確保Model m最後位置的形參
//這個值從業務邏輯層拿來的值
System.out.println(user.getName()+ ":" + user.getPwd());
//m.addAttribute("name", user.getName());
// m.addAttribute("pwd",user.getPwd());
m.addAttribute("user",user);
return "/index.jsp";
}
//從頁面取值
@RequestMapping("save2")
public String save2(User user, Model m) {
// Model StringMVC提供必須確保Model m最後位置的形參
//這個值從業務邏輯層拿來的值
for (User iterable_element :user.getList()) {
System.out.println(iterable_element.getName());
}
System.out.println(user.getRole().getName());
//m.addAttribute("name", user.getName());
// m.addAttribute("pwd",user.getPwd());
//m.addAttribute("user",user);
return "my/myjsp";
}
//返回json數據方式1
@RequestMapping(value="getJson",produces="text/html;charset=utf-8")
@ResponseBody
public String getJson() {
JsonObject js = new JsonObject();
js.addProperty("name","張三");
js.addProperty("pwd","lisi");
String str = js.toString();
return str;
}
//返回json數據方式1
@RequestMapping("getJson2")
public void getJson2(HttpServletResponseresponse) {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
JsonObject js = new JsonObject();
js.addProperty("name","張三");
js.addProperty("pwd","lisi");
String str = js.toString();
try {
response.getWriter().write(str);
} catch (IOException e) {
// TODO Auto-generatedcatch block
@RequestMapping("upload")
public String upload(MultipartFilefile,String name){
System.out.println(name);
System.out.println(file.getName());
System.out.println(file.getOriginalFilename());
System.out.println(file.getContentType());
String filePath ="d:/upload";
try {
file.transferTo(newFile(filePath+"/"+file.getOriginalFilename()));
} catch (IllegalStateException e){
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
return "index";
}
}
************************beans.xml*****************8***
<?xmlversion="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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!--開啓掃描註解 -->
<context:component-scanbase-package="com.libo"></context:component-scan>
<!--開啓springMVC註解 -->
<mvc:annotation-driven></mvc:annotation-driven>
<context:component-scanbase-package="com.libo"></context:component-scan>
<!--開啓springMVC註解 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!--前綴配置-->
<!--配置響應的目錄:爲/content -->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--<propertyname="prefix" value="/context/"></property> -->
<!--當返回頁面的時候,配置忽略後綴名 -->
<!-- <property name="suffix" value=".jsp"></property> -->
</bean>
<!--文件上傳的文件解析器 -->
<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
</beans>
*********************上傳和下載**********************
必須配置beans.xml
@Controller
//這個類就變成控制器value="/"相當於一個虛擬路徑
@RequestMapping("upload")
public String upload(MultipartFilefile,String name){
System.out.println(name);
System.out.println(file.getName());
System.out.println(file.getOriginalFilename());
System.out.println(file.getContentType());
String filePath ="d:/upload";
try {
file.transferTo(newFile(filePath+"/"+file.getOriginalFilename()));
} catch (IllegalStateException e){
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
return "index";
}
*************************下載*****************************
@RequestMapping("down")
public void down(HttpServletResponse response) {
//第一步設置相應文件內容,告訴瀏覽器,現在要輸出的是下載文件,不要用普通的html頁面解析
response.setContentType("application/x-msdownload");
//設置下載的文件名字(可以從數據庫中取出)
String FileName = "搭建SSH框架.ppt";
// URLEncoder.encode(FileName, "utf-8")作用更改編碼格式 url的編碼格式轉碼
//第二步,告訴瀏覽器,需要用戶自定義選擇下載,不用瀏覽器客戶端自動解析
try {
response.setHeader("Content-Disposition","attachment;filename="
+ URLEncoder.encode(FileName, "utf-8"));
//第三步使用流寫到瀏覽器上
OutputStream FileOut = response.getOutputStream();
//定義需要下載的文件位置,不一定文件要在webRoot下(可以數據庫記錄文件位置,然後使用這個能找到就行)
String DownFileName = "d:/file/3、搭建SSH框架.ppt";
//使用流讀出來然後寫入
InputStream in = new FileInputStream(DownFileName);
//Spring提供的
//FileCopyUtils.copy(in, FileOut);
byte[] buffer = new byte[in.available()];
//通過流讀出到內存
in.read(buffer);
//寫入流向客戶端
FileOut.write(buffer);
//關閉流
in.close();
FileOut.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}