• Java Web项目搭建过程记录(struts2)


    开发工具:eclipse

    搭建环境:jdk1.7   tomcat 8.0

    基础的java开发环境搭建过程不再赘述,下面从打开eclipse 之后的操作开始

    第一步: 创建项目,File -> New -> dynamic web project

    tomcat 版本一般会自动获取,只要填上项目名称,点击下一步

    到这个页面之后,把Content directory 改成WebRoot,自动生成xml的选项点选为√ ,点击完成。

    项目目录如下图所示:

    其中,lib文件夹放的是项目所需的jar包,将jar包复制进去后,点击右键 Bulid Path -> Add To Bulid Path,导入成功。

    我导入的是structs2.3.37版本,需关联导入共9个jar包,如下:

    在WebRoot下新建jsp页面 index.jsp,然后将项目add到tomcat服务器上,点击运行。现在在浏览器中已经可以访问啦

    第二步,修改配置文件

     1. web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
        <display-name>HelloWorld</display-name>
     
        <!--系统首页配置 -->
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
        
        <!-- 配置文件 多个文件用,分开 -->
        <init-param>    
            <param-name>config</param-name>    
            <param-value>struts.xml</param-value>    
        </init-param>
        
        <!-- 拦截器 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <!-- 配置Struts2框架默认载入的Action包结构 -->
              <init-param>
                  <param-name>actionPackages</param-name>
                  <param-value>com.koala.actions</param-value>
              </init-param>
        </filter>
        
        <!-- 配置Filter拦截的URL -->
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
    </web-app>

       过滤器:Filter过滤器是java常用技术,也是Struts2能跑起来的基本前提。其工作原理为:当项目启动时,首先会加载web.xml中的配置,所以会首先加载配置的StrutsPrepareAndExecuteFilter过滤器。过滤器是作为用户请求和Web服务器之间的处理程序,可以对用户请求和处理程序相应的内容进行处理。通过过滤器原理,可以达到让开发人员先一步对用户请求进行处理,在Servlet被调用前,检查Request对象,修改Request Header和Request内容。
      过滤器过滤的URL资源可以是Servlet、JSP、HTML文件,或是整个路径下的任何资源。多个过滤器可以构成一个过滤器链,当请求过滤器关联的URL时,过滤器链上的过滤器会挨个发生作用。过滤器往往用在进行权限控制、字符集处理等场合。

      * 注:拦截器名称org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,2.1.3以前版本时为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,请注意区分。

      监听器:监听某个对象的的状态变化的组件。监听器的相关概念事件源:

    • 被监听的对象(三个域对象 request,session,servletContext)
    • 监听器:监听事件源对象, 事件源对象的状态的变化都会触发监听器 。
    • 注册监听器:将监听器与事件源进行绑定。
    • 响应行为:监听器监听到事件源的状态变化时,所涉及的功能代码(程序员编写代码)

      按照被监听的对象划分:ServletRequest域 ;HttpSession域 ;ServletContext域。按照监听的内容分:监听域对象的创建与销毁的; 监听域对象的属性变化的。

    2. struts.xml

      struts.xml 新建在src目录下,以下为该文件的基本配置

    <?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>
    
    </struts>
    

    在配置过struts的package属性后,文件配置被我修改为

    <?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>
    	<!-- 设置编码格式为utf-8 -->
    	<constant name="struts.i18n.encoding" value="utf-8"/>
    
    	<!-- 修改struts.xml后,无需重启Tomcat -->
    	<constant name="struts.configuration.xml.reload" value="true"/>
    
    	<!-- package属性介绍
            1.name      ->包的名称,可自定义,可以配置多个包
            2.namespace ->命名空间,不同模块可以指定不同的空间,必须以"/"开头,为防止action的name重复
            3.extends   -> 继承,值是直接或间接的继承struts-default,它也是一个xml文件
          -->
        <package name="login" namespace="/user" extends="struts-default">
    	    <!-- action 属性介绍
    	        1.name   ->url请求名,不需要加后缀(.action)
    	        2.class  ->处理url对应的java类,class要求报名加类名
    	        3.method ->配置处理请求的方法,默认为execute;方法必须是public String修饰的
    	     -->
            <action name="login" class="com.koala.action.LoginAction" method="login">
    	        <!-- result属性介绍
    	            1.name:->匹配请求方法的返回值,默认是success
    	            2.type:->结果处理类型,默认是dispatcher转发
    	                 chain:  链接到下一个action,执行完actionA后执行actionB<result type="chain">exit</result>
    	                 redirect: 重定向到jsp页面
    	                 redirectAction:  重定向到下一个action
    	         -->
                <result name="success">/success.jsp</result>
                <result name="error">/login.jsp</result>
                <result name="redire" type="chain">userCount</result>
            </action>
            <action name="userCount" class="com.koala.action.LoginAction" method="userCount">
            	<result name="success">/WEB-INF/success.jsp</result>
            </action>
        </package>
        
        <!-- 默认包  没有命名空间时,会进入该包查找action -->
        <package name="default" namespace="/" extends="struts-default">
    	<action name="index">
    	  <result>/index.jsp</result>
    	</action>
      </package>
    </struts>
    

     此时项目下的文件目录如下:

    LoginAction.java的内容如下:

    package com.koala.action;
    
    public class LoginAction {
    
    	public String login(){
    		System.out.println("login");
    		return "redire";
    	}
    	
    	public String userCount(){
    		System.out.println("userCount");
    		return "success";
    	}
    }
    

     此时项目可以成功运行,浏览器输入http://localhost:8080/HelloWorld/user/login, 或者http://localhost:8080/HelloWorld/index,都可以进行访问啦

    此时此刻的心情

     

    啊哈哈   巴适得很

  • 相关阅读:
    C# 两个窗体中相互切换的方法
    Linq对DataTable数据的分组统计
    如何让窗体大小随着控件的大小变化而变化
    两张表解决用户自定义数据库之思路
    picturebox显示用字符串代表图片名称的(已导入资源的)图片
    如何将access高版本数据库保存为低版本的?
    Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别
    条件编译解决AutoCAD多版本问题
    一个爬取股票信息的爬虫程序
    Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
  • 原文地址:https://www.cnblogs.com/koalaFish/p/10869800.html
Copyright © 2020-2023  润新知