在Eclipse中配置Struts2
步骤一:首先打开java ee并建立一个动态网站项目,我建立的项目名为struct2_jisuanqi_20180514,如下图:
工程展开如下:
步骤二:配置struts2
想要运用struts2的框架需要借助一些jar包,对于新手来说,一下简单的jar包是必须的且能满足大多数的需求(下载地址自行百度):
注意:web.xml文件(默认是自动生成的,如果没有请自行在lib目录下新建,是整个工程的关键)
至此,我们的基本环节已经初始化完毕,接下来是向工程中添加自己真正的东西。
步骤三:配置web.xml文件(即整个工程的拦截器,至于拦截器的具体作用查看别处)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>struct2_jisuanqi_20180514</display-name>
<welcome-file-list>
<!-- 设置起始页 -->
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>/*</url-pattern>
</filter-mapping>
</web-app>
步骤四:编写自己相关的程序
在WebContent目录下新建.jsp(web的起始页)文件
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML >
<html>
<head>
<title>简单的计算器</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<s:form action="jisuan">
<s:label value="简单计算器"></s:label>
<s:textfield name="num1" label="第一个数"></s:textfield>
<s:select name="check" list="{'+','-','*','/'}" label="运算符"></s:select>
<s:textfield name="num2" label="第二个数"></s:textfield>
<s:submit value="计算"></s:submit>
</s:form>
</body>
</html>
result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
<head>
<title>运算结果</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
您选择的运算符是:<s:property value="check" /><br>您计算的结果是:<s:property value="num3"/><br>
</body>
</html>
编写action处理函数:com.mr.action.DealAction处理类函数写在java Resources目录下的src文件夹下。我们通常以包的方式对不同工能的函数进行分类包装
注意:set函数与get函数的设置,在处理类函数中应该有与前台相对应的变量名,struts框架会直接通过set,get函数来进行参数的传递。
package com.mr.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
public class DealAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 761775720829200479L;
private String num1; //第一个操作数
private String num2; //第二个操作数
private String check; //运算符
public double num3; //计算结果
public String getNum1() {
return num1;
}
public void setNum1(String num1) {
this.num1 = num1;
}
public String getNum2() {
return num2;
}
public void setNum2(String num2) {
this.num2 = num2;
}
public String getCheck() {
return check;
}
public void setCheck(String check) {
this.check = check;
}
public double getNum3() {
return num3;
}
public void setNum3(double num3) {
this.num3 = num3;
}
public String execute(){
String x=getNum1(); //获取第一个数
String y=getNum2(); //获取第二个数
double num4=Double.parseDouble(x); //将第一个数转换为double型
double num5=Double.parseDouble(y); //将第二个数转换为double型
System.out.println(num4);
if(check.equals("+")){ //进行加法运算
num3=num4+num5;
}
if(check.equals("-")){ //进行减法运算
num3=num4-num5;
}
if(check.equals("*")){ //进行乘法运算
num3=num4*num5;
}
if(check.equals("/")){ //进行除法运算
num3=num4/num5;
}
ActionContext.getContext().getSession().put("num3", num3); //将计算结果保存到session中
return SUCCESS;
}
}
前端与后台的交互,Struts.xml的配置:
<?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>
<package name="first" extends="struts-default"><!-- 定义一个package -->
<!-- 对action返回结果的配置 -->
<action name="jisuan" class="com.mr.action.DealAction">
<result name="success">/result.jsp</result>
<result name="login">/index.jsp</result>
</action>
</package>
</struts>
结果