maven的依赖于Oracle使的注意事项

        

?在Maven中定义依赖于Oracle
    <scope>主要管理依赖的部署。目前<scope>可以使用5个值: 
        compile,缺省值,适用于所有阶段,会随着项目一起发布
        provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency> 
        runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.11</version>
                    <scope>runtime</scope>
                </dependency>
        test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
         
        system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>6.0.0</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath>
            </dependency>

POM文件里面可以引用一些内置属性(Maven预定义可以直接使用)
    ${basedir} 项目根目录 
    ${version}表示项目版本;
    ${project.basedir}同${basedir};
    ${project.version}表示项目版本,与${version}相同;
    ${project.build.directory} 构建目录,缺省为target
    ${project.build.sourceEncoding}表示主源码的编码格式;
    ${project.build.sourceDirectory}表示主源码路径;
    ${project.build.finalName}表示输出文件名称;
    ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes    
    
Struts2实现了MVC模式:
    Model:Action接口/ActionSupport类 (业务控制器)多实例单线程
    View:Struts2提供了4种视图技术  jsp freemarker velocity xslt,同时提供了Result接口,允许用户自定义扩展        
    Controller:一组拦截器和前端控制器StrutsPrepareAndExecuteFilter
    
配置前端控制器web.xml
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.devMode</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Struts2的常量配置
    default.properties  struts-default.xml struts-plugins.xml[插件配置] struts.xml struts.properties web.xml    
    
struts.xml中的常量配置方法:
    <constant name="struts.action.extension" value="action" />
    
抽象包  --只能被继承使用
    <package name="default" extends="struts-default" abstract="true"></package>

Action的定义方法:
    1、不实现任何接口,不继承任何类
    2、Action接口(5大常量和execute方法)
    3、ActionSupport

Action的配置:
    <action name="hello" class="com.yan.action.HelloAction"></action>
    使用hello.action访问HelloAction中的execute方法
    
    <action name="hello" class="com.yan.action.HelloAction" method="show"></action>
    使用hello.action访问HelloAction中的show方法
        
Action的编程:
    将一个类对象相关的CRUD方法定义在一个Action类中
    public class MyAction{
        public String add()throws Exception{}
        public String del()throws Exception{}
        public String load()throws Exception{}
        ......
    }
    
    <action name="user_*" class="com.yan.MyAction" method="{1}">
        user_add.action访问MyAction类中的add方法
    
    <action name="*_*" class="com.yan.{1}Action" method="{2}">
        User_add.action访问com.yan.UserAction类中的add方法
    
    特例:<action name="*">如果不定义<action>的class属性,则默认ActionSupport类
            <result>/{1}.jsp
        实现了hello.action直接访问/hello.jsp页面,不需要额外定义对应的Action类

ActionSupport提供了服务器端数据校验的支持,可以通过编码实现服务器端数据校验
    如果Action类中有一个方法public String add()throws Exception,则对应的服务器端数据校验方法为
        public void validateAdd(){}。校验方法名称规则为"validate"+方法名,注意方法名首字母大写 
        
        执行流程:当客户提交数据时,首先框架自动化构建对应的Action对象(反射),然后框架的拦截器负
    责接收用户提交数据,并通过set方法将参数注入到Action对象中,然后调用validateXXX方法实现服务器端
    数据校验,然后如果有validate方法则继续执行validate方法;以上方法中如果调用this.addFieldError添
    加了报错信息,则自动跳转到<result name=input>对应的页面;如果没有添加任何报错信息,则执行对应的
    方法xxx或者execute
    
Action如何接收请求参数:
    1、属性驱动
    2、模型驱动
    3、对象驱动OGNL  <input name="user.username"/>
    
Action中如何使用Servlet Api
    1、ActionContext  --Map
    2、ServletActionContext  ---API
    3、实现xxxAware接口
        (Map  API)
        
Action中添加报错信息的方法
    addActionError("报错信息")        
        <s:actionerror/>
    addFieldError("输入域名称","报错信息")
        <s:fielderror/>显示所有输入域相关的报错信息
        <s:fielderror name="username"/>显示<input name="username"/>对应的报错信息

猜你喜欢

转载自blog.csdn.net/java_laoming/article/details/81159739