天天看点

Struts2框架使用介绍

      最近开始学习Struts2框架,想把之前传统的servlet/jsp实现的MVC架构转化为Struts2框架的过程写下来,以备以后回顾。

这里会借鉴到其他大神的博客内容,方便理解。

     首先看一下传统的显示:

jsp界面代码:

$.ajax({
			type : "POST", //提交方式
			url : "AccountServlet", //相当于form表单中action
			data : {

			}, //相当于form表单中元素,多个参数用逗号隔开,注意最后一个参数值之后没有任何符号
			dataType : "JSON", //标识返回的数据类型,值有json和text
			success : function(msg) { //当访问请求成功返回后,由该方法进行处理
			//msg参数表示返回的值
             console.log(msg);
							
					},
					error : function(msg) { //当访问请求失败时,由该方法进行处理
						alert("用户业务请求失败" + msg);
					}

				});
           

对应的AccountServlet里面的代码:

public class AccountServlet  extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		HttpSession  session =req.getSession();	
		User user  =(User)session.getAttribute("loginUser");
		System.out.println("输出一下"+user.getId());
		List<MoneyAccount> list=new AccountDaoImpl().all(user.getId());
		//还要返回一个数据
		ObjectMapper mapper=new ObjectMapper();
		String info  =mapper.writeValueAsString(list);
		System.out.println(info);
		PrintWriter out =resp.getWriter();
		out.print(info);
		out.flush();
		out.close();	
	}	
}
           

web.xml代码:

<servlet>
    <description></description>
    <display-name>AccountServlet</display-name>
   <!-- 给Servlet类起一个别名 -->
   <servlet-name>AccountServlet</servlet-name>
    <!-- Servlet类的完整路径 -->
   <servlet-class>servlet.AccountServlet</servlet-class>
   </servlet>
   
   <servlet-mapping>  
   <!-- 要访问的别名 -->
    <servlet-name>AccountServlet</servlet-name>
   <!-- 设定访问某个Servlet的访问路径 -->
   <url-pattern>/AccountServlet</url-pattern>   
   </servlet-mapping>
           

  这样看来,servlet 获取请求数据,处理业务逻辑,分发转向 几个功能为一体,不利于维护。

Struts2框架使用介绍

  总的来说,struts 框架mvc 实现低耦合,便于程序的维护,配置文件控制流程的转向 ,很清晰,控制器主要负责具体业务的实现

第一步:

先导Struts2的jar包,自行去网站下载,或者:https://download.csdn.net/download/weixin_42120561/11453171

Struts2框架使用介绍

第二步:配置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">
  <filter>
    <filter-name>Struts2</filter-name>
    <filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
</web-app>
           

第三步:在jsp界面发出请求

$.ajax({
			   type: "POST", //提交方式
			   url: "score.action",  //相当于form表单中action
			   data:{
				   current : currVal,
				   rows : rowsVal
				   
			   },  //相当于form表单中元素,多个参数用逗号隔开,注意最后一个参数值之后没有任何符号
			   dataType :"JSON",  //标识返回的数据类型,值有json和text			  
			   success:function(msg){  //当访问请求成功返回后,由该方法进行处理
				  //msg参数表示返回的值   			  			 
			   },			   
			   error:function(msg){  //当访问请求失败时,由该方法进行处理
				   alert("aaa业务请求失败"+msg);
			   }			   			   
		   });  	
           

4.在struts.xml里面写上score.action对应的方法。这里就是org.zhuao.controller.HelloController类里的score方法。

<action name="score" class="org.zhuao.controller.HelloController" method="score">
			<result name="suc" type="json">
				<param name="root">jsonScore</param>
			</result>			
		</action>
           

5.写Action类的方法,也就是org.zhuao.controller.HelloController类里的score方法。

private String current;
	private  String rows;
	private  JSONObject  jsonScore;
    public String score() {
		
		HttpServletResponse response=ServletActionContext.getResponse();
		HttpServletRequest request=ServletActionContext.getRequest();
		HttpSession session =request.getSession();		
		
...

		JSONObject data=new JSONObject();
		data.put("symbol", true);
		System.out.println(data.toString());
		jsonScore=data;		
		return "suc";
	}
           

这边会返回一个"suc"字符串,对应的是struts.xml里面的result。jsp界面也就会接收到jsonScore。

只是起到复习回顾的作用,顺手上传一个小工程,因为上述的struts.xml等等代码不全,以供参考。

https://download.csdn.net/download/weixin_42120561/11453342

继续阅读