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-页面动态标签
十七、 关于原型设计模式
十八、
- SpringMVC
- springmvc
- SpringMVC
- SpringMVC
- springMvc
- springMVC
- springmvc
- springMVC
- springMVC
- springmvc
- SpringMVC
- SpringMVC
- springMvc
- springmvc
- springmvc
- SpringMVC
- Springmvc
- springmvc
- 数据结构与算法分析(Java语言描述)(31)—— 使用 Prim 算法求有权图的最小生成树(MST)
- 【Scikit-Learn 中文文档】高斯过程
- SpringMVC框架流程
- 1004. 成绩排名 (20)
- SSM里关于mysql主从配置代码层实现
- springmvc
- JAVA设计模式之【代理模式】二(jdk动态代理)
- Leetcode:14. Longest Common Prefix
- 尝试阅读ReentrantLock、AbstractQueuedSynchronizer源码(二)
- RPC入门总结(五)RPC IO基础:Netty高性能并发关键技术点
- Week 1, Aerial Robotics
- Android心跳包(一)——心跳机制
- php socket IO阻塞方式的Server/Client
- 想去阿里巴巴面试么