当前位置: 首页 > news >正文

struts2Demo

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;
}
}

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

相关文章:

  • 总有一款合适你--ARM下裸机开发环境大全
  • 关于javascript原型链的个人理解
  • 项目管理学习笔记二:信息系统服务管理
  • Monkey源码分析之事件源
  • C语言课程设计题目汇总
  • tools:context=.MainActivity的作用 (转载)
  • SharePoint 2013 托管导航及相关配置
  • C语言课程设计具体安排说明
  • Oracle数据库恢复:归档日志损坏案例一则
  • 深搜基础题目 杭电 HDU 1241
  • iPhone开发技巧笔记壹
  • IOS中使用轻量级数据库
  • 委托初步学习
  • 用GCD线程组与GCD信号量将异步线程转换为同步线程
  • java中执行子类的构造方法时,会不会先执行父类的构造方法
  • [case10]使用RSQL实现端到端的动态查询
  • [NodeJS] 关于Buffer
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Docker入门(二) - Dockerfile
  • gulp 教程
  • leetcode-27. Remove Element
  • log4j2输出到kafka
  • Mocha测试初探
  • MySQL数据库运维之数据恢复
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PhantomJS 安装
  • PHP 的 SAPI 是个什么东西
  • Phpstorm怎样批量删除空行?
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Redis学习笔记 - pipline(流水线、管道)
  • Redis在Web项目中的应用与实践
  • Sublime text 3 3103 注册码
  • 基于webpack 的 vue 多页架构
  • 使用Gradle第一次构建Java程序
  • 移动端 h5开发相关内容总结(三)
  • 中文输入法与React文本输入框的问题与解决方案
  • MPAndroidChart 教程:Y轴 YAxis
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • ${ }的特别功能
  • (C语言)fread与fwrite详解
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (算法)求1到1亿间的质数或素数
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)ORM
  • (转)socket Aio demo
  • (转)母版页和相对路径
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .Net CF下精确的计时器
  • .net core 6 集成 elasticsearch 并 使用分词器