最初のSpringMVCシンプルエントリープログラム

SpringMVCと以前に作成したMVCプログラムの利点は、SpringMVCが多くのことを実行するのに役立ったと感じています。以前に作成したMVCには、フロントエンドコントローラー、多数のバックエンドコントローラー、構成ファイルなどがあります。はい、SpringMVCにもこれらがあります。SpringMVCを使用する場合、フロントコントローラーを作成する必要はありませんが、さまざまな構成を実行する必要があると言われることがあります。たとえば、mavenプロジェクトを構築する必要があります。数えました。 3つの構成ファイルがあります。初心者がこれらのファイルを構成するのは非常に面倒かもしれません。以前のMVCを使用することをお勧めします。理由は何ですか。すでにMVCを作成したことがあり、Springフレームワークに触れたばかりなので、非常に流暢に始めるのは少し難しいでしょう。このようなフレームワークはコードを簡素化します。ツールのように、練習は完璧です。

SpringMVCエントリープログラム:

1.まず、mavenプロジェクトを作成し、対応するjarパッケージをpom.xml構成ファイルに追加します。(jarパッケージコードは前のブログに投稿されました)

次に、web.xml構成ファイルでDispatcherServlet(フロントエンド)コントローラーを構成します。

	<servlet>
		<!-- 这里的名字可以随便起,但是为了我们方便管理,最好是项目名称 -->
		<servlet-name>SpringBasicMVC01</servlet-name>
		<!-- 前端控制器的完全限定名,可以通过从我们的jar包中拿到这个名字 -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<!-- 这个是DispatcherServlet控制器要读取的字段名,不可以随便起! -->
			<param-name>contextConfigLocation</param-name>
			<!-- 按照这个格式填写,SpringBasicMVC01.xml这个配置文件名和接下来我们在资源文件中创建的文件名要一致
				之后DispatcherServlet控制器会读取里面的配置信息
			 -->
			<param-value>classpath:SpringBasicMVC01.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<!-- 这个要和上面的servlet-name名称保持一致! -->
		<servlet-name>SpringBasicMVC01</servlet-name>
		<!-- 拦截的url,这样写的是任意以.do结尾的请求都会进入DispatcherServlet控制器 -->
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

2. index.jspページを作成し、ハイパーリンクを使用してデモンストレーションします

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath }/test.do">1.访问Controller</a>
</body>
</html>

ここで、$ {pageContext.request.contextPath} /test.doがURLであり、電気ショックのハイパーリンクがDispatcherServletによってインターセプトされ、$ {pageContext.request.contextPath}がEL式であり、プロジェクト名がWebページに表示されます。柔軟にするために、死ぬまで書いてはいけません。

3つ目は、バックエンドコントローラーとSpringBasicMVC02.xml構成ファイルを書き込むことです。

(区別を容易にするために、混乱しないように、バックエンドコントローラーはフロントエンドに対して相対的です。)

/**
 * 后端控制器
 * 实现Controller接口,实现接口的handleRequest方法
 * 当然实现哪个接口根据我们SpringBasicMVC01.xml配置文件中的处理器决定的
 * @author: 满脑子代码的祝大朋
 * @date: 2019年1月10日 下午7:05:48
 */
public class WebAction implements Controller
{
	@Override
	public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp ) throws Exception
	{
		//实例化ModelAndView对象
		ModelAndView mv = new ModelAndView();
		//添加模型数据
		mv.addObject("data", "66666");
		//设置下一视图
		mv.setViewName("main");
		//返回
		return mv;
	}
}

次に、SpringBasicMVC02.xml構成ファイルで、関連するプロセッサー、マッパー、およびビューリゾルバーを構成します。

プロセッサは、カスタムコントローラの実装方法を決定します

マッパーは、クライアントから渡されたURLをオブジェクトのコントローラーにマップする方法を決定します

ビューリゾルバは、クライアントへの応答を生成する方法を決定します

<!-- 配置处理器 -->
   <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
   
   <!-- 配置映射器 -->
   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
   
   <!-- 配置视图解析器 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   	<!--prefix:前缀 suffix:后缀 这样写的话,/WEB-INF/jsp/main.jsp这样一个连接,只需要在后端控制器写 mian 就行了 -->
   	<property name="prefix" value="/WEB-INF/jsp/"/>
   	<property name="suffix" value=".jsp"/>
   </bean>

   <!-- 设置映射关系,DispatcherServlet(前端)控制器会根据/test.do找到后端控制器(WebAction) -->
   <bean name="/test.do" class="com.study.web.WebAction" />

 このとき、ページのハイパーリンクをクリックすると、リクエストはフロントコントローラーに送られ、フロントコントローラーはリクエストのURLに従ってバックエンドコントローラーを見つけます。バックエンドコントローラーが関連するビジネス操作を実行すると、次のビューのURLに戻ります。フロントコントローラーに対して、フロントコントローラーがステアリングを行います。この時点で、/ WEB-INF / jsp /main.jspページに移動します

もちろん、バックエンドコントローラのコードコメントをクリックするだけで、実装されているインターフェイスは異なる場合があります。これらはすべて構成ファイルに依存します。興味がある場合は、jarパッケージをご覧ください。実現できないインターフェイスや機能がたくさんあります。

/**
 * 实现HttpRequestHandler,上一个实现 Controller接口的话
 * 两者实现的方法就不一样了,这里做个对比
 * Controller接口
 * 		有返回值,返回值类型是ModelAndView
 * 		通过addObject()把信息存入模型数据,模型数据会存入request作用域
 * 		通过setViewName()设置转向下一个视图的名称。
 * HttpRequestHandler接口
 * 		无返回值
 * 		把数据存入到request作用域中和转向方法和我们之前写的一样
 * @author: 满脑子代码的祝大朋
 * @date: 2019年1月10日 下午7:44:36
 */
public class WebAction implements HttpRequestHandler
{
	@Override
	public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setAttribute("data", "66666");
		req.getRequestDispatcher("/WEB-INF/jsp/main.jsp").forward(req, resp);
	}
}

 構成も変更する必要があり、プロセッサとマッパーを変更する必要があります!

コードは以下のように表示されます

 <!-- 配置处理器 -->
   <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
   <!-- 配置映射器 -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/test.do">webAction</prop>
			</props>
		</property>
	</bean>   
<bean id="webAction" class="com.study.web.WebAction" />

もちろん、リレーショナルマッパーは以前と同じです。 

4、main.jspコード

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	This is a main.jsp;
</body>
</html>

実行後、SpringMVCのこの簡単なエントリープログラムを完了することができます!

記録、要約、共有!学習は常に進行中です!

おすすめ

転載: blog.csdn.net/qq_35340913/article/details/86247596