SpringMVC
对应的页面跳转都是依赖于servlet,后面对代码进行了封装。
1.完全基于Servlet的对应的web网页
一,编写对应的Controller
//继承对应的HttpServlet
//DoGet传参
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//定义参数
String method=req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","执行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
//业务逻辑
//视图跳转
req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
二,编写对应的jsp跳转页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>xiaowei</title>
</head>
<body>
${msg}
</body>
</html>
三,在web项目当中注册对应的servlet
<?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>HelloServlet</servlet-name>
<servlet-class>com.wei.service.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<!-- 对应的url访问地址-->
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app>
2.基于SpringMVC编写
- 编写对应的xml文件
- 编写对应的controller
- jsp页面
一,xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<--两种映射处理器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<--Controller实现类的适配器类,其本质是执行Controller中的handleRequest方法。-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--添加视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--与controller层的设置的访问名相同-->
<bean id="/hello1" class="com.wei.Controller.HelloController"/>
</beans>
二,对应的controller
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//新建一个模型与视图对象
ModelAndView mv = new ModelAndView();
//封装对象在对象当中添加数据
mv.addObject("msg","HelloSpringMVC!");
mv.setViewName("hello1");//拼接访问的完整路径
return mv;//返回该对象
}
public ModelAndView handleRequest1(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse){
ModelAndView md = new ModelAndView();
md.addObject("md", "口才");
md.setViewName("hello");
return md;
}
}
三,jsp页面
<html>
<head>
<title>xiaowei</title>
</head>
<body>
${msg}
${md}
</body>
</html>
三,基于注解的SpringMVC实现
- xml文件
- 对应的controller
- jsp页面
一,xml文件当中
<?xml version="1.0" encoding="UTF8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:contect="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 扫描对应的包-->
<contect:component-scan base-package="com.wei.Controller"/>
<!-- 开启注解驱动-->
<mvc:annotation-driven/>
<!-- 处理器适配器-->
<mvc:default-servlet-handler/>
<bean id="spring" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</Beans>
二,对应的controller,这个当中运用model来传输数据
@Controller
public class HelloController {
@RequestMapping("/jk") //对应的url映射地址
public String test(Model model){// model传输数据
model.addAttribute("cc","cc在吗?");//存储的在model当中的数据
return "hello";//返回的页面
}
}
三,jsp页面
<html>
<head>
<title>xiaowei</title>
</head>
<body>
${msg}
${md}
</body>
</html>
结论:省去了对应的继承Controller接口,将modelAndview进行了分离,model用来存储数据,而对应的view直接return得到对应的界面。
视图解析器:InternalResourceViewResolver 将返回的名字转换成对应的jsp名称。
对应的注解?
@Controller 定义controller层 在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返回给对应的View进行展示。在SpringMVC中提供了一个非常简便的定义Controller的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller标记一个类是Controller,然后使用@RequestMapping和@RequestParam等一些注解用以定义URL请求和Controller方法之间的映射,这样的Controller就能被外界访问到。此外Controller不会直接依赖于HttpServletRequest和HttpServletResponse等HttpServlet对象,它们可以通过Controller的方法参数灵活的获取到
@ResopnseBody 标记返回的是一个字符串而不是一个jsp页面
@RequestMappering 对应的url地址