spring框架的好处,就是能用注解干的事情,就不用写代码。代码分离,各司其职。html
1.导包,仍是4大核心架包,加上web和webmvc 加日志记录 logging.前端
2.配置文件:springmvc.xml 同上,因此就不写了web
web.xml 第一个配置前端控制器,负责处理全部应用程序请求,已经说过了,ajax
<!-- Map all requests to the DispatcherServlet for handling -->将全部请求映射到DispatcherServlet处理spring
来讲说第二个<!-- 配置一个支持rest风格的filter --> ctrl+shift+t 而后输入hidden 复制全类名mvc
HiddenHttpMethodFilter 翻译: 隐藏的Http方法过滤 做用:
<!-- 配置一个支持rest风格的filter --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <!-- 拦截全部请求 --> <url-pattern>/*</url-pattern> </filter-mapping>
二、在页面发请求的时候,指定咱们自定义的请求方式app
index.jsp 核心代码:框架
<body>
<a href="hello">hello</a><br/>
<a href="rm/handle01?user=123">规定请求参数</a><br/>
<a href="rm/handle02">规定请求头</a><br/>
<a href="rm/handle03">规定请求方式</a>
<form action="rm/handle03"method="post">
<input type="submit" value="POST提交" />
</form><br/>
<a href="handle01">路径模糊匹配handle01</a>
<hr/>
<h3>测试Rest风格的URL</h3>
<a href="book/1">查询图书</a><br/>
update:
<form action="book/1" method="post">
<input name="_method" value="PUT"/>
<input type="submit" value="修改图书"/>
</form><br/>
delete:
<form action="book/1" method="post">
<input name="_method" value="DELETE"/>
<input type="submit" value="删除图书"/>
</form><br/>
<form action="book" method="post">
<input type="submit" value="新增图书"/>
</form><br/>
jsp
</body>post
测试以下:
@Controller public class PathVariableTest { @RequestMapping("/deletebook/{bookid}") public String handle01(@PathVariable("bookid") Integer bookid){ System.out.println("删除的 图书id:"+bookid); return "success"; } }
注解:
@Controller:告诉Spring这是一个控制器,是用来控制跳转逻辑的
@RequestMapping("/lookmm"):/表明从当前项目根目录下找
@RequestMapping两个位置
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * 路径的模糊匹配 * @author lfy * * SpringMVC:RequestMapping进行路径映射容许写通配符;Ant风格的路径 * ?:通配一个字符 * *:通配0/多个字符:也能够匹配一层路径 * **:通配多层路径 * 精确优先 * 最精确------?------*-------** * */ @Controller public class TestRequestMapping2Controller { /** * 精确匹配: * 精确优先 * @return */ @RequestMapping("/handle01") public String handle01(){ System.out.println("handle01..."); return "success"; } @RequestMapping("/handle0?") public String handle02(){ System.out.println("handle02..."); return "success"; } @RequestMapping("/handle0*") public String handle03(){ System.out.println("handle03..."); return "success"; } @RequestMapping("/**/handle04") public String handle04(){ System.out.println("handle04..."); return "success"; } }
增删改查:GET 查询、DELETE 删除、PUT 更新、POST 新增
@Controller public class RestTestController { @RequestMapping(value="/book",method=RequestMethod.POST) public String addBook() { System.out.println("图书添加完成"); return "success"; } @RequestMapping(value="/book/{id}",method=RequestMethod.PUT) public String updateBook(@PathVariable("id")Integer id) { System.out.println("图书修改完成" + id); return "success"; } @RequestMapping(value="/book/{id}",method=RequestMethod.DELETE) public String deleteBook(@PathVariable("id")Integer id) { System.out.println("图书删除完成" + id); return "success"; } @RequestMapping(value="/book/{id}",method=RequestMethod.GET) public String getBook(@PathVariable("id")Integer id) { System.out.println("图书查询完成" + id); return "success"; } }
解决响应乱码问题:加在web.xml配置文件中 ,CharacterEncodingFilter 字符编码过滤器
<!--字符编码的filter必定要放在最前面 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!-- 配置encoding,告诉咱们指定的编码格式 --> <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>CharacterEncodingFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping>