java开发了一个web系统,由登陆页面进入主界面是用转发好还是重定向好?
由登陆页面进入主界面通常情况下转发更快,而且能保持request内的对象,但是在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。详细信息可以通过千锋教育进行了解,千锋Java现已拥有成熟独立的项目库,项目均1:1引进大厂项目,授课采用 CREA 项目研发模型。
转发是指当一个Servlet处理请求的时候,它可以决定自己不继续处理,而是转发给另一个Servlet处理;重定向是指当浏览器请求一个URL时,服务器返回一个重定向指令,告诉浏览器地址已经变了,麻烦使用新的URL再重新发送新请求。
想要了解更多有关Java的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。
java编程中 重定向的特点
java的重定向在struts2,sertvlet跳转有重定向,和重定向不同的显示信息的方式是转发;重定向主要是从action或servlet跳转到页面,首先地址栏变化为跳转指定的路径,另一点就是重定向的页面不能使用servlet或action中的全局变量来显示信息;而转发相反action或servlet中的全局参数是可以用来显示信息的,而且地址栏任然是action或者servle的地址
Java标准输出重定向到GUI
实现输出从控制台到GUI并不复杂 只需要将标准输出重定向
重定向标准输出很easy System 类里有两个静态方法setErr(PrintStream err) 和 setOut(PrintStream out) 分别用于重定位 标准 错误输出流和 标准 输出流 只需要在程序初始时设置即可
// GUIPrintStream guiPrintStream = new GUIPrintStream(System out jTextArea);
System setErr(guiPrintStream);
System setOut(guiPrintStream);
在上面的代码中 我们发现一个新的类 GUIPrintStream 这是我们为 PrintStream 所做的包装 因为我们的输出目标位置是GUI 所以需要在 PrintStream 上做些文章 大家请看下面 GUIPrintStream 的代码
Java代码
/**//*
* To change this template choose Tools | Templates
* and open the template in the editor
*/
import java io OutputStream;
import java io PrintStream;
import javax swing SwingUtilities;
import javax swing text JTextComponent;
/** *//**
* 输出到文本组件的流
*
* @author Chen Wei
* @website chenwei mobi
* @email chenw
*/
public class GUIPrintStream extends PrintStream {
private JTextComponent ponent;
private StringBuffer *** = new StringBuffer();
public GUIPrintStream(OutputStream out JTextComponent ponent) {
super(out);
ponent = ponent;
}
/** *//**
* 重写write()方法 将输出信息填充到GUI组件
* @param buf
* @param off
* @param len
*/
@Override
public void write(byte[] buf int off int len) {
final String message = new String(buf off len);
SwingUtilities invokeLater(new Runnable() {
public void run() {
*** append(message);
ponent setText( *** toString());
}
});
}
}
/**//*
* To change this template choose Tools | Templates
* and open the template in the editor
*/
import java io OutputStream;
import java io PrintStream;
import javax swing SwingUtilities;
import javax swing text JTextComponent;
/** *//**
* 输出到文本组件的流
*
* @author Chen Wei
* @website chenwei mobi
* @email chenw
*/
public class GUIPrintStream extends PrintStream {
private JTextComponent ponent;
private StringBuffer *** = new StringBuffer();
public GUIPrintStream(OutputStream out JTextComponent ponent) {
super(out);
ponent = ponent;
}
/** *//**
* 重写write()方法 将输出信息填充到GUI组件
* @param buf
* @param off
* @param len
*/
@Override
public void write(byte[] buf int off int len) {
final String message = new String(buf off len);
SwingUtilities invokeLater(new Runnable() {
public void run() {
*** append(message);
ponent setText( *** toString());
}
});
}
}
类 GUIPrintStream 继承自 PrintStream 并且对它进行了一些修改
GUIPrintStream 在构造函数中增加了一个 JTextComponent 变量 它就是我们的目标输出 GUI 组件 它规定了目标输出组件是一个文本组件 接下来覆写了 write(byte[] buf int off int len)方法 这个方法原来的作用是将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流 现在经过我们的修改 变成了将 byte 数组包装成 String 写入目标 GUI 组件
简单的代码完成了将标准输出重定向到 GUI 的全过程 由此延伸 还可以将标准输出重定向到文本文件 从GUI获取标准输入等 就不一一介绍
测试
Java代码
public class MainFrame extends javax swing JFrame {
public MainFrame() {
initComponents();
// 重定向到通过文本组件构建的组件输出流中
System setOut(new GUIPrintStream(System out textArea));
}
private void initComponents() {
scrollPane = new javax swing JScrollPane();
textArea = new javax swing JTextArea();
btnOut = new javax swing JButton();
setDefaultCloseOperation(javax swing WindowConstants EXIT_ON_CLOSE);
setTitle( 标准输出重定向到GUI chenwei mobi );
textArea setColumns( );
textArea setRows( );
scrollPane setViewportView(textArea);
getContentPane() add(scrollPane java awt BorderLayout CENTER);
btnOut setText( System out println(System getProperties()); );
btnOut addActionListener(new java awt event ActionListener() {
public void actionPerformed(java awt event ActionEvent evt) {
btnOutActionPerformed(evt);
}
});
getContentPane() add(btnOut java awt BorderLayout PAGE_END);
pack();
}
private void btnOutActionPerformed(java awt event ActionEvent evt) {
System out println(System getProperties());
}
/**
* @param args the mand line arguments
*/
public static void main(String args[]) {
java awt EventQueue invokeLater(new Runnable() {
public void run() {
new MainFrame() setVisible(true);
}
});
}
private javax swing JButton btnOut;
private javax swing JScrollPane scrollPane;
private javax swing JTextArea textArea;
lishixinzhi/Article/program/Java/hx/201311/25870