框架
框架是一些将通用的,基础的功能封装起来的半成本.
好处:
提高开发效率:
降低维护成本:
使用框架,框架已经帮我们做了基础的功能,我们要做的就是写逻辑!
有哪些框架:
web层 : struts2,springMVC
service层 : spring
dao层 : Hibernate(hql),mybatis
struts2,Hibernate实际上是比较重的框架,重在封装的很深.基础的功能比较多.
springMVC,mybatis相对是比较轻的.
ssh:struts2,spring,Hibernate
ssm:springMVC,spring,mybatis
struts2,spring,mybatis也是可以的,但是用的比较少.
框架还有很多,dubbo,springboot等等.这些框架解决的问题也不一样.
struts2的重点:
1,学习如何使用 :主流还是使用配置文件,当然也是可以使用注解开发.
2,配置文件 :配置文件里面都可以配置什么?如何配置
3,struts2流程 :当一个请求到达struts2直到响应到浏览器,都经过了什么?
4,拦截器 :类似于过滤器.
5,action :action是什么?怎么写?
6,ognl&值栈 :ognl如何取值,值栈如何存值,存进去的值是什么样子?
7,封装数据 :在struts2中如何封装数据,都有哪些方式.
struts2入门:
1,首先将jar包copy到/WEB-INF/lib下,共13个.
2,配置web.xml
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<!-- 可以声明struts2框架常量值
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>GBK</param-value>
</init-param>
-->
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置struts2.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="struts2" class="cn.itheima.web.action.Struts2Action" method="show"></action>
</package>
</struts>
如何获取参数:
属性驱动:设置其属性
1,直接在action中给出,和页面input中name属性的值一样的成员变量,同时提供get/set!
<input type='text' name='username'>
public String username ;
2,在action中给出要封装的对象,然后input中的name 要写成员变量.属性名
<input type='text' name='user.username'>
public User user ;
模型驱动:
实现一个ModelDriven<T>接口,建立一个成员变量,同时重写getModel()方法
private User user = new User();;
public User getModel(){
return user;
}
页面:<input type='text' name='username'>
配置文件加载顺序(了解):
1,default.properties.里面都是一些常量.
2,struts-default.xml struts-plugin.xml struts.xml(我们自己的配置文件)
3,struts.properties文件(我们自己的配置文件,一般已经不使用了)
4,自定义配置
5,加载web.xml
6,bean配置
后加载的会覆盖之前加载的
详解struts.xml
<!-- struts最外层的标签 -->
<struts>
<!-- 声明常量,这里可以覆盖掉default.properties的配置 -->
<!-- 可以帮助我们解决post请求乱码问题 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- package 有点像 java的类,他可以继承也可以是抽象的 -->
<!-- name属性的名称必须唯一,不唯一报错 -->
<!-- namespace叫做命名空间,一般是我们一个模块下,都用写在一个package下,都是一个namespace也是唯一的-->
<!-- extends继承,我们的package是可以继承的,可以写一个package,让别的package继承,这里我们继承的是struts2的默认的-->
<package name="default" namespace="/" extends="struts-default">
<!-- global-results 当前package下,所有的action返回视图都可以使用这里面的,相当于一个package级别全局的-->
<global-results>
<!-- 返回的视图 -->
<result name="" type=""></result>
</global-results>
<!-- namespace + name组成了我们的访问路径-->
<!-- class是类的全路径 -->
<!-- mothod是这个请求要访问哪一个方法 -->
<action name="login" class="cn.itheima.web.action.LoginAction" method="login">
<!-- 方法中返回的字符串,会在这里面匹配,如果匹配上,执行对应这个路劲的页面 -->
<!-- name属性: 在java的方法中 return一个字符串,如果这个字符串和name的值一样,将进行跳转-->
<!-- 这里默认转发,要是重定向增加 type="redirect" -->
<result name="success" type="redirect">/success.jsp</result>
<result name="failer">/failer.jsp</result>
</action>
<!-- 当请求符合*_*这种格式 a_b 那么{1}就是a {2}就是b -->
<!-- 会访问cn.itheima.web.action.aAction的b()方法 -->
<!-- 虽然对于开发,这样写能节约很多时间,但是,一般情况下之后使用一个* -->
<!-- <action name="*_*" class="cn.itheima.web.action.{1}Action" method="{2}"></action> -->
</package>
</struts>
创建一个action类
简单类 :什么都没有
实现Action :有五个常量,一个默认方法
继承ActionSupport :有功能,
传统开发一般使用ActionSupport,或者是自己实现一个BaseAction.
对于今天大家写代码,那种方式都随意.
|
|