热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

struts2Demo

1.新建WebProject,名称:struts2Demo;2.建立一个用户库struts2,包含最少的struts2的最少的6个jar文件;其实呢,对于MyEclipse8以上

1.新建Web Project, 名称:struts2Demo;

image

image

2.建立一个用户库struts2, 包含最少的struts2的最少的6个jar文件;

其实呢, 对于MyEclipse8以上来说, 是不必须的, 因为它直接支持struts2了.不需要另外导包.

image

3.用Build Path将struts2的库加进来;

4.在web.xml中加入以下配置:

[?xml version="1.0" encoding="UTF-8"?>
[web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >

[!-- struts2的配置 -->
[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>


[welcome-file-list>
[welcome-file>index.jsp[/welcome-file>
[/welcome-file-list>
[/web-app>

5.建立Action,

package com.yenange.action;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action {
private String uname; //表单中的姓名
private String upass; //表单中的密码
//执行方法
@Override
public String execute() throws Exception {
System.out.println("姓名:"+uname);
System.out.println("密码:"+upass);
if (uname.equals("leaf") && upass.equals("leaf")) {
return "success";
}
return "error";
}
//记住, 要有get和set方法
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}

6.三个页面文件:

//index.jsp
[%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
[html>
[head>
[title>My JSP 'index.jsp' starting page[/title>
[/head>
[body>
[form action="login">
用户名:[input type="text" name="uname">[br>
密码:[input type="text" name="upass">[br>
[input type="submit" value="登陆" />
[/form>
[/body>
[/html>
//welcome.jsp
[%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
[html>
[head>
[title>My JSP 'welcome.jsp' starting page[/title>
[/head>
[body>
welcome struts2

[/body>
[/html>
//fail.jsp;
[%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
[html>
[head>
[title>My JSP 'welcome.jsp' starting page[/title>
[/head>
[body>
出错!

[/body>
[/html>

7.配置struts.xml. (对于MyEclipse6来说, 只能从别的地方copy)

[?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="default" namespace="/" extends="struts-default">
[action name="login" class="com.yenange.action.LoginAction">
[result name="success">/welcome.jsp[/result>
[result name="error">/fail.jsp[/result>
[/action>
[/package>
[!-- Add packages here -->
[/struts>



8.到此完成.可以运行一下了, 是不是很简单?

-----------------------------------------------------------------

http://sl514.blog.163.com/blog/static/66327412008121365039/

下面是取得request, session, application这些东西的方法.

package com.yenange.action;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.Action;

public class LoginAction implements Action,ServletRequestAware,SessionAware,ServletContextAware {
private String uname; //表单中的姓名
private String upass; //表单中的密码
HttpServletRequest request; //常用的request
Map session; //常用的session,有不同, 但是不需要管
ServletContext application; //常用的application
//第二种取的方法;
HttpServletRequest request2 = ServletActionContext.getRequest();
HttpServletResponse response2 = ServletActionContext.getResponse();
HttpSession session2 = request2.getSession();

@Override
public void setServletRequest(HttpServletRequest req) {
this.request=req;
}
@Override
public void setSession(Map session) {
this.session=session;
}
@Override
public void setServletContext(ServletContext application) {
this.application=application;
}
//执行方法
public String execute() throws Exception {
if (uname.equals("leaf") && upass.equals("leaf")) {
request.setAttribute("userName", uname);
return "success";
}
request.setAttribute("accessError", uname+"这个用户或密码不正确!");
return "error";
}
//记住, 要有get和set方法
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}

//这些只是初步了, 后面再学习一些关于标签, 动态方法之类的东西.



推荐阅读
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
qqjayzhe
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有