首页 > 网站 > WEB开发 > 正文

springmvc简介

2024-04-27 15:15:19
字体:
来源:转载
供稿:网友

sPRingmvc所涉及组件

1、前段控制器DispatcherServlet,作用:接收请求,响应结果,相当于转发器。(一般不需要程序员来开发)2、处理器映射器HandlerMapping,作用:根据请求的url查找Handler。(一般不需要程序员来开发)3、处理器Handler  编写Handler要按照HandlerAdapter的要求去做。4、处理器适配器HandlerAdapter,作用:按照特定规则(HandlerAdapter的规则)去执行Handler。5、视图解析器View resolver,作用:进行视图解析,根据逻辑视图名解析成真正的视图。(一般不需要程序员来开发)6、视图 View:是一个接口,实现类支持不同的View类型。

springmvc相关配置:

1、在web.xml中配置如下标签

 <!--springmvc前端控制器-->    <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!--contextConfigLocation配置springmvc加载的配置文件(配置处理器、映射器、适配器等)-->        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring-config.xml</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <!--配置url-pattern方式:               第一种:*.action 访问以.action结尾的文件由DispatcherServlet解析               第二种:/ 所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析,               这种方式可以实现RESTFul风格的url        -->        <url-pattern>*.action</url-pattern>    </servlet-mapping>

2、在src下会自动生成spring-config.xml,需要添加的配置如下

<!--配置Handler       Handler的name属性相当于路径,可随意命名,class属性为编写的Handler,也就是controller   -->  <bean name="/test.action" id="TestController"class="controller.TestController"/>

以下是两种非注解的映射器配置

第一种配法  <!--非注解处理器映射器-->   <beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

第二种配法

<!--简单url映射,上面的第二种形式-->

<beanclass="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <propertyname="mappings">

           <props>

                <!--对controller进行映射-->

               <prop key="/test1.action">TestController</prop>

           </props>

       </property>

    </bean>

以下是两种非注解的适配器配置  <!--非注解处理器适配器 要求所编写的Handler实现Controller接口-->

   <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--另一种非注解的适配器 要求所编写的Handler实现HttpRequestHandler接口-->

<beanclass="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

        上面都是鸡肋,不常用。

<!--注解映射器-->

    <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    <!--注解适配器-->

    <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

<!--使用下面的这个标签可以代替上面的两个注解映射器与适配器,并且封装了很多有用的东西。实际开发就用它-->

    <mvc:annotation-driven></mvc:annotation-driven>

   <!--视图解析器-->       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <!--这里配置前缀和后缀以后,就不用在Handler中写绝对路径了,只需写上缺的那部分即可-->        <property name="prefix" value="/WEB-INF/jsp/"/>        <property name="suffix" value=".jsp"/>    </bean>

3、还需创建视图,也就是jsp。

4、自行编写Handler,也就是controller

public class TestController implements Controller {    @Override    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {        //因为没有连接数据库,这里做数据模拟        List<UserEntity> UserList=new ArrayList<UserEntity>();        UserEntity zhangsan=new UserEntity();        zhangsan.setName("张三");        zhangsan.setSex("boy");        zhangsan.setYear(20);        UserEntity lisi=new UserEntity();        lisi.setName("李四");        lisi.setYear(20);        lisi.setSex("girl");        UserList.add(zhangsan);        UserList.add(lisi);        //返回ModelAndView        ModelAndView modelAndView=new ModelAndView();        //此方法相当于request的setAttribut,这样就可以在jsp页面通过UserList取数据了        modelAndView.addObject("UserList",UserList);        //指定视图        modelAndView.setViewName("/WEB-INF/jsp/test.jsp");        return modelAndView;  //To change body of implemented methods use File | Settings | File Templates.    }}实际开发用它,上面的类没什么用,他是非注解映射器用的@Controllerpublic class TestController03 {    //@RequestMapping实现对selectAll方法和url进行映射,一个方法对应一个url    //一般建议将方法名称和url写成一样    @RequestMapping("/selectAll")    public ModelAndView selectAll(){        //因为没有连接数据库,这里做数据模拟        List<UserEntity> UserList=new ArrayList<UserEntity>();        UserEntity zhangsan=new UserEntity();        zhangsan.setName("张三");        zhangsan.setSex("boy");        zhangsan.setYear(20);        UserEntity lisi=new UserEntity();        lisi.setName("李四");        lisi.setYear(20);        lisi.setSex("girl");        UserList.add(zhangsan);        UserList.add(lisi);        //返回ModelAndView        ModelAndView modelAndView=new ModelAndView();        //此方法相当于request的setAttribut,这样就可以在jsp页面通过UserList取数据了        modelAndView.addObject("UserList",UserList);        //指定视图        modelAndView.setViewName("test");        return modelAndView;    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表