发表于: 2017-12-18 22:10:02
1 641
今天完成的事:
1.跑通了一个简单的springmvc。
2.学习了一些jsp的简单语法。
遇到的困难:
1、IDEA创建springmvc,第一步出现问题,尴尬了好久才发现,囧
创建之后目录不对,如图,开始以为是版本问题,而且配置文件出现好多报错,我以为是没有导入相关jar包
也试过先创建springmvc框架,然后添加maven框架,还试过删除xml文件在创建,总之一顿乱搞
最后发现原来有两个webapp,我一口老血喷到南墙上。。。。
2、创建springmvc项目后,启动tomcat可以跳转到index.jsp,但是无法跳转到指定的jsp,一度以为是博客的问题,换了好几个后发现都是一样,最后找了一个最简单的也是这个问题,再次尴尬
原因:视图解析器配置出错,如图,前缀的值少了一个 / ,
明天计划:
jsp和servlet都是新接触的概念,明天学习一下。
收获:
1、两个很简单的问题花费了很久的时间,以后一定要看仔细,一定要看仔细,一定看仔细。
2、springmvc大致流程:
请求-------前端处理器(中央处理器),根据url判断是否拦截-----处理器映射器handleMapping----
----处理器适配器(handlerAdaptor)--------处理器(自己定义的Controller),找到指定方法------返回ModelAndView-------视图解析器(ViewResolver)-------调用视图(view),如自己定义的jsp页面------响应
其中每一步之后都是返回前端处理器,再由前端处理器发出下一步,前几天日报的图很形象,现在完全理解了。
3、处理器映射器和处理器适配器必须成对出现,可以用<mvn:annotation-driven/>代替。
4、代码:
配置web.xml,
springmvc的入口---注册前端控制器,
DispatcherServlet本身是servlet的一个实现类,注册前端控制器时需要确定这个类,第二确定初始化参数,即核心配置问价位置(核心配置文件的名称格式有要求),第三声明匹配原则
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
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>Archetype Created Web Application</display-name>
<!--注册前端控制器-->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--读取配置文件,确定配置核心配置文件的路径-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc-servlet.xml</param-value>
</init-param>
<!--创建servlet的顺序-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--声明匹配原则-->
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
springmvc的核心---【servlet-name】-servlet.xml ,
命名格式是确定的,这个一定注意
扫描注解包,配置适配器和映射器,启动springmvc注解,视图解析器
<?xml version="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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- 3、自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.jnshu"/>
<!-- 1、配置映射器与适配器 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 启用spring mvc 注解 -->
<context:annotation-config/>
<!-- 2、视图解析器 -->
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<!--视图解析-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix" value=".jsp"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
</bean>
</beans>
Controller控制层
RequestMapping是处理请求地址的映射,放在类或者方法上,
value是请求地址,可以是数组;method指定请求类型,get,post,put,delete;
consume指定请求提交的内容类型,produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params指定请求中必须包含某些参数才能执行,headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
@Controller
@RequestMapping("/test")
public class HelloWorldController {
@RequestMapping(value = "/hello",params = {"name"})
public ModelAndView hello(HttpServletRequest request, HttpServletResponse response)throws Exception{
ModelAndView mv = new ModelAndView();
mv.addObject("message","hello 这是第一个页面");
mv.setViewName("helloworld");
return mv;
}
5、jsp
jsp本质是一个简化的servlet,是一种动态页面技术,目的是将逻辑代码和servlet分开。
语法:
<% 代码片段 %>
<%! 声明 %>
<%= 表达式 %>
<%-- 注释 --%>
指令:
<%@page %> 定义页面依赖属性;
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
<%@include file=“文件相对于uri的地址"%> 引入其他文件,不太理解uri是指哪个uri,还没用到;
<%@taglib% uri="uri" prefix="prefixoftag"> 引入标签库;
禅道:
http://task.ptteng.com/zentao/project-task-434.html
评论