springmvc

来源:互联网 发布:香港网络歌手小背心 编辑:程序博客网 时间:2024/06/03 10:27

Java框架第25天课件

一、        关于springmvc的概念

1、         作用

是一款比jsp更加好用的jsp

有固定的mvc代码结构

可以完成bs的管理软件页面快速开发

2、         有一款软件struts2

功能与springmvc类似

过时了

 

二、        关于springmvc的学习方法

1、         组件

需要用springmvc组件

在myeclipse中存在,不需要下载

其他辅助组件,mybatis

2、         开发环境

tomcat

bs方式运行,chrome,fireFox,edge,ie

myeclipse

3、         springmvc的开发方法

传统方法,过时了

注解方法,流行

三、        关于spring-mvc注解的概念

1、         实现的效果,或作用

1)     采用注解方式,达到继承某个父类的作用

2)     通过注解,自动注册url-pattern

3)     通过注解,数据类型的转换

4)     通过注解,数据校验

5)     通过注解,可以完成权限管理

 

2、         springmvc所有功能

全部采用注解方式进行

四、        构建springmvc开发环境

1、         构建一个标准的javaWeb项目

2、         加载springmvc组件

webmodule

pesistence

web,servlet

3、         手工修改web.xml

1)     springmvc的容器.xml文件放在/WEB-INF/后某个目录

2)     请求后缀

3)     字符集,utf-8

web.xml

  <servlet>

     <servlet-name>mvc30</servlet-name>

     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

     <init-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>

       /WEB-INF/springmvc-servlet.xml

       </param-value>

     </init-param>

     <load-on-startup>1</load-on-startup>

   </servlet>

   <servlet-mapping>

      <servlet-name>mvc30</servlet-name>

      <url-pattern>*.action</url-pattern>

   </servlet-mapping>

  

  <filter>

     <filter-name>character</filter-name>

     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param> 

            <param-name>encoding</param-name> 

            <param-value>utf-8</param-value> 

        </init-param> 

        <init-param> 

            <param-name>forceEncoding</param-name> 

            <param-value>true</param-value> 

        </init-param>

  </filter>

  <filter-mapping>

    <filter-name>character</filter-name>

    <url-pattern>*</url-pattern>

  </filter-mapping>   

 

 

4、         配置springmvc的容器文件

/WEB-INF/springmvc-servlet.xml

要点

1)     控制器所有package目录

2)     jsp文件,2个要素

所在目录

后缀

<!--

注解控制,或打开springmvc注解模式

 -->

    <context:component-scanbase-package="iss.springmvc.ctrl"></context:component-scan>

    <mvc:annotation-driven/>    

 

  <!--

  定义jsp路径与文件名称的解析方法

      <property name="prefix" value="/" />

   -->

   <beanid="viewResolver"

      class="org.springframework.web.servlet.view.InternalResourceViewResolver">

      <propertyname="prefix"value="/WEB-INF/jsproot"/>

      <propertyname="suffix"value=".jsp"/>

   </bean>

 

 

五、        关于springmvc显示一个jsp网页

1、         实现需求

jsp文件目录在

/WEB-INF/jsproot/test1/Test1.jsp

是不能列表展示出来的,是JAVAEE的安全规范

但可以用转发器打开

spirngmvc的控制器就是转发器

2、         编程要点

1)     写一个jsp

/WEB-INF/jsprot/test1/Test1.jsp

2)     写一个控制器

@Controller

@RequestMapping,多级

public String open();

3)     浏览器检测

3、         示例如下

@Controller

@RequestMapping("/test1")

public class TestController1 {

     public TestController1() {

            Log.getLog().info("TestController1?");

     }

     @RequestMapping("/fun1.action")    //test1/fun1.action

     public String open1(){

            return "/test1/Test1";   // -->/WEB-INF/jsproot/test1/Test1.jsp

     }

 

}

/WEB-INF/jsproot/test1/Test1.jsp

<%@ page  pageEncoding="utf-8"%>

 

<!DOCTYPEHTML >

<html>

  <head>

   

    <title>检测springmvc打开jsp:/WEB-INF/jsproot/test1/Test1.jsp</title>

  </head>

 

  <body>

    检测springmvc打开jsp:/WEB-INF/jsproot/test1/Test1.jsp<hr>

  </body>

</html>

 

 

六、        关于springmvc的开发web目录

1、         控制器请求目录

1)     是一个虚拟目录

不是真实目录

2)     由web.xml定义后缀

3)     由@RequestMapping定义请求url-pattern

2、         jsp文件

1)     所在目录可能在/WEB-INF后面的多级目录下

2)         无论多少级目录,如果此jsp文件由控制器请求打开,则这个jsp所在文件名称与目录,不再是自己的名称,或目录

3、         示例如下

 

七、        关于springmvc简单提交

1、         实现需求

1)     请求目录

/user1/test1.action-->打开

/WEB-INF/jsproot/user/UserRegAdd2.jsp-->提交

/WEB-INF/jsproot/user/UserRegAdd2.jsp-->

2)     相关字段

userId,Integer

name,String

password,String

userType,String

2、         编程要点

1)     写一个pojo类,4个类属性

userId,name,password,userType

2)     写一个控制器

/user1/test1.action,用于打开jsp

/user1/test2.action,用于提交jsp

3)     写第1个jsp文件,用于录入

/WEB-INF/jsproot/user/UserRegAdd2.jsp

提交路径为:/user1/test2.action

4)     写第1个jsp文件,用于显示

/WEB-INF/jsproot/user/UserRegAdd2.jsp

采用表达式方式显示

${po.userId},${po.name},${po.password},${po.userType}

 

3、         关键要点

1)     前台数据提交

要用一个pojo类封装提交数据

数据类型可以自动转换,String->Integer

2)     后台传递数据到前台

有多种方式,可以采用Map集合变量

map.put(“po”,pojo)

4、         示例代码如下

public class UserReg {

     private Integer userId;

     private String name;

     private String password;

       private String userType;

/WEB-INF/jsproot/user/UserRegAdd1.jsp

<%@ page  pageEncoding="utf-8"%>

 

<!DOCTYPE HTML >

<html>

  <head>

   

    <title>/WEB-INF/jsproot/user/UserRegAdd1.jsp</title>

  </head>

 

  <body>/WEB-INF/jsproot/user/UserRegAdd1.jsp<hr>

  <!--

    <form action="../user1/test2.action" method="get">

   --> 

    <form action="test2.action" method="post">

      <table border="1">

         <tr>

            <td align="right" width="100">用户Id:</td>

            <td >

               <input type="text" name="userId">

            </td>

         </tr>

         <tr>

            <td align="right">姓名:</td>

            <td >

               <input type="text" name="name">

            </td>

         </tr>

         <tr>

            <td align="right">密码:</td>

            <td >

               <input type="text" name="password">

            </td>

         </tr>

         <tr>

            <td align="right">用户类型:</td>

            <td >

               <input type="text" name="userType">

            </td>

         </tr>

         <tr>

            <td align="center" colspan="2">

               <button type="submit">提交保存</button>

            </td>

         </tr>    

      </table>

   

   

    </form>

  </body>

</html>

/WEB-INF/jsproot/user/UserRegAdd2.jsp

@Controller

@RequestMapping(value="user1")

 

public class UserRegController {

   public UserRegController() {

      Log.getLog().info("UserRegController?");

   }

 

   @RequestMapping("test1.action")  //-->/user1/test1.action

   public String openForm(){

      Log.getLog().info("打开jsp:UserRegAdd1.jsp");

      return "/user/UserRegAdd1";

   }

   @RequestMapping("test2.action")  //-->/user1/test2.action

   public String saveForm(UserReg pojo,Map map){

      Log.getLog().info("UserRegAdd1.jsp提交过来,马上返回到:UserRegAdd2.jsp");

      Log.getLog().info(

           ","+pojo.getUserId()+

           ","+pojo.getName()+

           ","+pojo.getPassword()+

           ","+pojo.getUserType()

           );

      map.put("po", pojo);//pojo类对象送入request请求链

      return "/user/UserRegAdd2";

   }

}

 

 

5、         效果如下

 

八、        关于控制器的请求路径写法

1、         正常简单写法

1)     在类上面写

@RequestMapping(“/path1”)

作用于当前控制器所有请求方法的根路径

2)     在每个方法上面写

@RequestMapping(“/test1/test2/test3.action”)

最终形成的路径是

path1/test1/test2/test3.action

2、         其他写法

可以是(value=”某个路径”)

可以不写正斜杠

 

九、        关于spmvc注解开发要点

十、        关于注解配置点

十一、             关于注解控制器注解参数

十二、             关于spmvc-注解路径-1

十三、             关于spmvc-注解路径-2

十四、             关于spmvc-注解路径-3

十五、             关于spmvc-页面固定标签

十六、             关于spmvc-页面动态标签

十七、             关于原型设计模式

十八、