《一配置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();
}
}