springmvc的简单使用(1)

一:怎么使用springmvc:

在resource资源文件中新建springmvc核心配置文件其内容如下:

<context:component-scan base-package="com.ztb.controller"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

分别为包扫描和视图解析器

二:在web.xml文件中注册springmvc:

<servlet>
<servlet-name>springmvc</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>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

新建jsp页面与controll类:

<a href="${pageContext.request.contextPath}/ztb.do">访问服务器</a>

@Controller
public class ActionController {
@RequestMapping("/ztb")
public String demo(){
System.out.println("服务器。。。");
return "main";
}
}

1DispatchServlet表示前置控制器,是整个springmvc的控制中心,用户发出请求,dispatchservlet接受请求并拦截请求

2.HandlerMapping为处理器映射。DispatchServlet调用,HandleMapping根据请求url查找Handler

3HandlerExecution表示具体的Handler,主要作用是根据url查找控制器

4HandlerExecution将解析后的信息传给DispatchServlet

5HandlerAadpter表示处理器适配器,按照特定的规则去执行Handler,Handler让具体的Controller执行

6Controller将具体的执行信息返回给HandlerAadpter,如ModelAndView

7HandlerAadpter将视图名或模型传递给DispatchServlet

8DispatchServlet调用视图解析器(ViewResolver)来解析HandlerAadpter传递的逻辑视图名

9视图解析器将解析的逻辑视图名传给DispatchServlet

10DispatchServlet根据视图解析器的视图结果,调用具体的视图

11最终展示给用户

 

二:区分post和get请求:

在页面端如下:

 <form action="${pageContext.request.contextPath}/one.do" method="get">
<input type="submit" name="提交">
</form>

后端如下:

@RequestMapping(value = "/one",method = RequestMethod.GET)
public String demo1(){
System.out.println("get方法");
return "main";
}
@RequestMapping(value = "/one",method = RequestMethod.POST)
public String demo2(){
System.out.println("post方法");
return "main";
}

三:五种数据提交的方式:

1:单个提交数据

<form action="${pageContext.request.contextPath}/one.do">
姓名:<input name="myname"><br>
年龄:<input name="myage"><br>
<input type="submit" name="提交">

@RequestMapping("/one")
public String demo1(String myname,int myage) {
System.out.println(myname+myage);
return "main";
}
只要形参的名字与前端名字对应,就一定能取到数据

2:对象封装数据提交:

@RequestMapping("/two")
public String demo1(User user) {
System.out.println(user.getName()+user.getAge());
return "main";
}
<form action="${pageContext.request.contextPath}/two.do">
姓名:<input name="name"><br>
年龄:<input name="age"><br>
<input type="submit" name="提交">
</form>
会自动创建对象,要注意前端提交的名称要和实体类中的成员变量的名称一致

3:占位符提交数据:

仅限于超链接或地址栏提交数据,他是一杠一值,一杠一大括号,使用注解来解析

@RequestMapping("/three/{name}/{age}")
public String demo2(
@PathVariable
String name,
@PathVariable
int age) {
System.out.println(name+age);
return "main";
}
<a href="${pageContext.request.contextPath}/three/张三/22.do">动态提交</a>

4:隐射名称不一致:

前端方法的名称和后端的形参名称不一致,使用注解来解析:

@RequestMapping("/four")
public String demo3(
@RequestParam("name")
String uname,
@RequestParam("age")
String ugae) {
System.out.println(ugae+uname);
return "main";
}
<form action="${pageContext.request.contextPath}/four.do">
姓名:<input name="name"><br>
年龄:<input name="age"><br>
<input type="submit" name="提交">
</form>

5:手工提取数据:

@RequestMapping("/five")
public String demo3(HttpServletRequest request) {
String name = request.getParameter("name");
int age =Integer.parseInt(request.getParameter("age"));
System.out.println(age+name);
return "main";
}
<form action="${pageContext.request.contextPath}/five.do">
姓名:<input name="name"><br>
年龄:<input name="age"><br>
<input type="submit" name="提交">
</form>
posted @ 2022-08-18 13:32  Sunward阳  阅读(102)  评论(0)    收藏  举报