应用struts2的一个登陆小实例,Marker一下

struts2版本:2.3.15.3

在应用struts2时,

1)下载struts2版本,将其/lib下的以下jar文件拷贝到你所建项目的WEB-INF/lib目录下

struts2-core-2.3.15.3.jar

xwork-core-2.3.15.3.jar

commons-logging-1.1.3.jar

freemarker-2.3.19.jar

ognl-3.0.6.jar

2)在项目文件夹下新建三个jsp文件,分别为login.jsp、login_success.jsp、login_failure.jsp

login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>login.jsp page</title>
  </head>
  <body>
    <s:form action="LoginAction" namespace="/check">
<s:textfield name="uname" label="USER"></s:textfield>
<s:textfield name="upassword" label="PASSWORD"></s:textfield>
<s:submit value="SUBMIT"></s:submit>
</s:form>
  </body>
</html>

login_success.jsp:

  <html>
    <head>
      <title>成功登陆</title>
    </head>
    
    <body>    
      <h1>恭喜!登陆成功</h1>
    </body>
  </html> 

login_failure.jsp:

<html>
    <head>
      <title>登陆失败</title>
    </head>
    
    <body>    
      不好意思,登陆失败!<h1><s:property value="sum" /></h1>
    </body>
  </html> 

在login.jsp中使用了struts2标签库,<%@ taglib prefix="s" uri="/struts-tags"%>。表单中action="LoginAction"制定了当点击提交按钮后交给LoginAction这个类来处理。因此,现在我们来书写这个类LoginAction。

LoginAction.java:

package action;
import action.LoginCheck;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction extends ActionSupport{
private String uname;
private String upassword;

public void setUname(String name){
this.uname = name;
}
public void setUpassword(String pwd){
this.upassword = pwd;
}
public String getUname(){
return this.uname;
}
public String getUpassword(){
return this.upassword;
}
public void validate(){
if(getUname()==null||"".equals(getUname().trim())){
this.addFieldError("uname","USERNAME is null!");
}
if(getUpassword()==null||"".equals(getUpassword().trim())){
this.addFieldError("upassword","PASSWORD is null!");
}
}
public String execute() throws Exception{
LoginCheck lc = new LoginCheck();
if(lc.isLogin(uname,upassword)){
ActionContext.getContext().getSession().put("login","true");
return "success";
}
else
return "error";
}
}

这里注意:LoginAction类继承自ActionSupport。所以前面得有improt导入相应的包。它有两个私有成员变量,他们的名称必须和login.jsp中表单中的两个textfield的name属性

一样,通过重写execute()方法,根据初始化一个LoginCheck类的实例,调用isLogin()方法返回一个字符串,成功是“success",失败是"failure"。下面是

LoginCheck.java:

package action;
public class LoginCheck{
public boolean isLogin(String uname,String upassword){
if(uname.equals("james")&&upassword.equals("1234"))
return true;
else return false;
}
}

那么如何根据返回的字符串来调用相应的页面呢,这就需要struts2.xml的配置了。

<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd">
  <struts>
<package name="login" extends="struts-default" namespace="/check">
<action name="LoginAction" class="action.LoginAction">
<result name="success">/login_success.jsp</result>
<result name="error">/login_failure.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
  </struts>

至此,完工。第一篇博客,写的毫无技术可言。只是单纯的把代码贴上,标记一下。


要在Vue 2中使用MapboxGL添加一个跳动的marker,可以按照以下步骤进行: 1. 首先,确保已经引入了Vue和MapboxGL库以及相关的依赖文件。 2. 在Vue组件中,创建一个包含地图的容器元素。 ```html <template> <div id="map"></div> </template> ``` 3. 在Vue组件的`mounted`生命周期钩子中,初始化地图并添加marker。 ```javascript <script> import mapboxgl from 'mapbox-gl'; export default { mounted() { mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN'; const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v11', center: [lng, lat], zoom: zoomLevel }); const marker = new mapboxgl.Marker({ element: createMarkerElement() }) .setLngLat([lng, lat]) .addTo(map); // 添加跳动动画 animateMarker(marker); }, methods: { createMarkerElement() { // 创建自定义标记 const el = document.createElement('div'); el.className = 'marker'; el.style.backgroundImage = 'url(https://example.com/your-marker-icon.png)'; // 替换为您自己的标记图标URL el.style.width = '40px'; el.style.height = '40px'; el.style.backgroundRepeat = 'no-repeat'; el.style.backgroundSize = 'cover'; return el; }, animateMarker(marker) { marker.getElement().classList.add('jump-animation'); } } } </script> ``` 确保将YOUR_MAPBOX_ACCESS_TOKEN替换为您自己的Mapbox访问令牌,并将lng、lat和zoomLevel替换为地图的初始中心点和缩放级别。 4. 在CSS样式中,创建一个跳动的动画效果。 ```css @keyframes jump { 0% { transform: translateY(0); } 50% { transform: translateY(-20px); } 100% { transform: translateY(0); } } .marker { animation: jump 1s infinite; } ``` 5. 在Vue组件中引入所需的CSS样式。 ```html <style> @import 'mapbox-gl/dist/mapbox-gl.css'; /* 添加您自己的样式 */ </style> ``` 这样,当Vue组件被挂载时,将会初始化MapboxGL地图并在地图上添加一个跳动的marker。记得根据您的需求,调整地图的样式、标记的位置和动画效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值