springMVC
Servlet------------>jsp
out.print() out.write()
model1 jsp + javabean
model2 MVC jsp+servlet+javabean
M:model Java类
V:view 视图
C:controller 控制器 servlet
框架
ssh: struts1 | struts2 | springmvc spring hibernate
ssm: springmvc spring mybatis
jsp
jstl+el | ajax:json
M: 模型 普通java类 mybatis:持久层,直接和数据交互的,pojo,service
dao不需要实现类,用mybatis创建映射文件,实现接口方法
V: 视图 jsp | html
不需要改变
C: 控制器 servlet springmvc[]
servlet 变为mvc
事务、监听等业务不需要自己再去管理,交给spring 管理
客户端:发送请求给服务器:1>地址 2>form表单 3>按钮
IDEA maven普通项目添加web
pom.xml中打war包,表明是web项目
war
Ctrl+Alt+shift+S 打开页面[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gnHB68Oi-1632145255457)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210918151738057.png)]
选中moduel,选中模块,加号添加web,右侧上面是配置文件web.xml的位置,下面是web文件夹的位置。可以自定义设置,完成后OK,刷新就可以了。
MVC创建步骤
1、配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
<!-- 将DispatcherServlet 的创建时间提前到tomcat启动时-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
备注:load-on-startup 1 load-on-startup
不设置,只有当发送请求时才会创建servlet实例,
设置为1时,启动服务时就会创建servlet实例
2、创建controlle包 、创建具体的类、方法
添加注解:@Controller 可以被spring扫描
方法添加@RequestMapping("/hello")指定访问地址
方法返回的字符串会和下面步骤3创建的解析器的前缀和后缀拼接,服务器就会按拼接的地址查找并访问
@Controller
public class controller {
@RequestMapping("/hello")
public String hello(){
System.out.println("----------");
return "hello";
}
}
3、springMVC配置文件
resource文件夹下创建springMVC.xml配置文件
指定扫描文件,创建视图解析器,指定前缀和后缀。
<!--扫描文件-->
<context:component-scan base-package="com.ljh.controller"></context:component-scan>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
注意:webapp下面创建jsp文件不安全,可以通过地址直接访问
webapp/WEB-INF 下面创建,只能通过请求转发访问,通过地址无法访问
注解:
requestMappig请求映射
加在类上,可以两级映射
路径跳转:
1、…/返回上一级 按层级跳转
2、从项目根路径出发${pagecontex.request.contextPath}
method 指定请求方式:get/post/put/delete/…
@RequestMapping(value = "/emplist",method = RequestMethod.GET)
方法不匹配 405
params 指定参数、获取参数
@RequestMapping("/dept")
public class deptController {
@RequestMapping(value = "/deptlist" ,params = {"username","pwd"})
public String list( String username ,String pwd){
System.out.println(username+"-------"+pwd);
return "deptlist";
}
}
注意:访问时,参数必须匹配,不匹配报错400
restful风格的请求
跳转地址http://localhost:8080/springMVC01/dept/deptlist/user=alice/pwd=123456
@Controller
@RequestMapping("/dept")
public class deptController {
@RequestMapping(value = "/deptlist/{user}/{pwd}")
public String list(@PathVariable("user") String username , @PathVariable("pwd") String pwd){
System.out.println(username+"-------"+pwd);
return "deptlist";
}
}
blic String list(@PathVariable(“user”) String username , @PathVariable(“pwd”) String pwd){
System.out.println(username+"-------"+pwd);
return “deptlist”;
}
}