springmvc 与 struct 的区别学习

  • Post author:
  • Post category:其他

背景:看到公司的项目从struct2改造为springmvc,其实从本科开始学习struct2开始对struct2很混乱,之后做了一些springmvc的项目,但每次开发之前老师或者师姐都会创建好项目,并且各个配置文件也都写好,自己也没有去了解学习过这些,导致一致对于所有的配置都很混乱,对于struct2以及springmcv的区别更是一塌糊涂。在工作中对于知识以及业务需要知其然并且知其所以然。加油,koala。

     一、struct2的认知 

  1. 基本解释:struct2 是一个mvc框架

    其中,M是指model,存储数据,是使用的javaBean;(javaBean必须有get、set方法

    V是jsp;

    例子如下:

    login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<%--<p><a href="<s:url%20action='Welcome'/>">Hello World</a></p>--%>
<h2>test!</h2>
<form action="Welcome.action">
  UserName: <input type="text" name="m_user.UserName"/>
  Password: <input type="password" name="m_user.password"/>
  <br>
  <input type="submit">
</form>
<%--<s:form action="Welcome">--%>
  <%--<s:textfield name="m_user.userName" label="username"/>--%>
  <%--<s:password name="m_user.password" label="password"/>--%>
  <%--<s:submit/>--%>
<%--</s:form>--%>
</body>
</html>

    Welcome.jsp

<%--
  Created by IntelliJ IDEA.
  User: yanzexin
  Date: 16/9/4
  Time: 上午8:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
<h1> Hello struts2!</h1>
<h2><s:property value="m_user.userName"/> </h2>
</body>
</html>

    由以上两个jsp可以看出,可以使用form表单来传输数据,但在login.jsp中的name以及welcome.jsp中的value必须写对action类中的成员变量的名称,否则数据无法正确传输。

    C是继承ActionSupport的类来实现控制,其实就是action,主要是excute函数,由于后续会被当做javaBean使用,因此需要有set、get方法。

    2、配置文件

<?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>
    <!--code here!-->
    <package name="user" extends="struts-default">
        <action name="login">
            <result>/login.jsp</result>
        </action>
        <action name="Welcome" class="actions.UserAction" method="execute">
            <result name="success">/Welcome.jsp</result>
            <result name="error">/Fail.jsp</result>
        </action>
    </package>
</struts>

调用Welcome方法,会映射到actions包里的UserAction(就是前面的Controller)并且调用execute方法。如果结果是success,就是调用/Welcome.jsp页面,如果结果是error就是调用/Fail.jsp页面。

如果方法名是execute,就不用写method=“execute”了。

没有指定class属性,默认使用ActionSupport类

3、扩展

由以上一个登陆功能可以看出,struct2中是一个请求对应一个action,所以struct2为类级别的拦截,一个类对应一个request上下文。

二、springmvc 认知

1、springmvc配置文件基础

1)   配置配置文件加载监听器ContextLoaderListener

ContextLoaderListener它的作用是启动web容器,(加载配置文件)自动装配applicationContext.xml配置信息。

2)   部署applicationContext.xml文件(监听方式实现加载)

一般配置servicedaomodel

如果不写任何参数配置,默认的是在/WEB-INF/applicationContext.xm

如果想要自定义文件名,需要在web.xml中加入contextConfigLocation这个context参数

 <!– 配置applicationContext.xml –>
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext*.xml</param-value>
 </context-param>

3)   配置过滤器(字符过滤器、url过滤器等)

各种过滤器的配置,例如:

<filter>
   
<filter-name>charsetFilter</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>

 

4)   配置前段控制器(DispatcherServlet

DispatchServlet是HTTP请求的中央调度处理器,它将web请求转发给controller层处理,它提供了敏捷的映射和异常处理机制。

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-config-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

其中init-param中是初始化applicationContext.xml。一般配置controller

 

 

5)   配置错误页面

2.    自动装配

<context:component-scan base-package="com.jd.*"/>

在该配置文件中使用  context:component-scan  自动扫描包base-package中目录下可以作为javabean加载的类并加载,其中会扫描包含Service,Component,Repository持久层dao,Controller注解修饰的类

3、maven 管理的项目的配置文件 -Settings.xml文件

setting文件是maven的配置文件,是全局的。pom.xml是局部的,是所在项目的局部配置。

1)   Settings.xml文件中的元素

a)     Profiles

Profile的作用是根据环境参数来构建配置列表

它包含了id、activation、repositories、pluginRepositories和 properties元素。

如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。

i.        Properties

Profile的扩展属性列表。用来存放一些值,例如,our-project通过以下设置,可以在其他配置文件中使用,使用方式${ user.install }。

<properties>

<user.install>our-project</user.install>

</properties>

2)   ActiveProfiles

作用:用来激活profile        列表。


初步整理就这些,后期再继续整理。。。。



版权声明:本文为zjj_study_home原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。