「java请求响应参数命名」java命令参数

博主:adminadmin 2022-12-26 11:30:11 57

今天给各位分享java请求响应参数命名的知识,其中也会对java命令参数进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

javaweb如何实现请求和响应

先来看一个流程图:

服务器处理请求的流程:

(1)服务器每次收到请求时,都会为这个请求开辟一个新的线程。

(2)服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体!

(3)服务器还会创建response对象,这个对象与客户端连接在一起,它可以用来向客户端发送响应。

由流程图可以看出,在JavaWeb的请求与响应中,最重要的两个参数为request以及response,这两参数在Servlet的service( )方法中。

1、response概念:

response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来对客户端进行响应的,这说明在service()方法中使用response对象可以完成对客户端的响应工作。

response对象的功能分为以下四种:

(1)设置响应头信息

(2)发送状态码

(3)设置响应正文

(4)重定向

2、response响应正文

response是响应对象,向客户端输出响应正文(响应体)可以使用response的响应流,repsonse一共提供了两个响应流对象:

(1)PrintWriter out = response.getWriter():获取字符流;

(2)ServletOutputStream out = response.getOutputStream():获取字节流;

当然,如果响应正文内容为字符,那么使用response.getWriter(),如果响应内容是字节,例如下载时,那么可以使用response.getOutputStream()。

注意,在一个请求中,不能同时使用这两个流!也就是说,要么你使用repsonse.getWriter(),要么使用response.getOutputStream(),但不能同时使用这两个流。不然会抛出illegalStateException异常。

java中请求参数action怎么获取

1. ActionContext

在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServlet Http的请求(HttpServletRequest),响应(HttpServletResponse)操作. 我们需要在Action中取得request请求参数"username"的值:

ActionContext context = ActionContext.getContext();

Map params = context.getParameters();

String username = (String) params.get("username");

on执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放的是Action在执行时需要用到的对象. 一般情况, 我们的ActionContext都是通过: ActionContext context = (ActionContext) actionContext.get();来获取的.我们再来看看这里的actionContext对象的创建:

static ThreadLocal actionContext = new ActionContextThreadLocal();

ActionContextThreadLocal是实现ThreadLocal的一个内部类.ThreadLocal可以命名为"线程局部变量",它为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突.这样,我们ActionContext里的属性只会在对应的当前请求线程中可见,从而保证它是线程安全的.

通过ActionContext取得HttpSession: Map session = ActionContext.getContext().getSession();

2. ServletActionContext

ServletActionContext(com.opensymphony.webwork. ServletActionContext),这个类直接继承了我们上面介绍的ActionContext,它提供了直接与Servlet相关对象访问的功能,它可以取得的对象有:

(1)javax.servlet.http.HttpServletRequest : HTTPservlet请求对象

(2)javax.servlet.http.HttpServletResponse : HTTPservlet相应对象

(3)javax.servlet.ServletContext : Servlet上下文信息

(4)javax.servlet.ServletConfig : Servlet配置对象

(5)javax.servlet.jsp.PageContext : Http页面上下文

如何从ServletActionContext里取得Servlet的相关对象:

1取得HttpServletRequest对象: HttpServletRequest request = ServletActionContext. getRequest();

2取得HttpSession对象: HttpSession session = ServletActionContext. getRequest().getSession();

3. ServletActionContext和ActionContext联系

ServletActionContext和ActionContext有着一些重复的功能,在我们的Action中,该如何去抉择呢?我们遵循的原则是:如果ActionContext能够实现我们的功能,那最好就不要使用ServletActionContext,让我们的Action尽量不要直接去访问Servlet的相关对象.

注意:在使用ActionContext时有一点要注意: 不要在Action的构造函数里使用ActionContext.getContext(),因为这个时候ActionContext里的一些值也许没有设置,这时通过ActionContext取得的值也许是null;同样,HttpServletRequest req = ServletActionContext.getRequest()也不要放在构造函数中,也不要直接将req作为类变量给其赋值。至于原因,我想是因为前面讲到的static ThreadLocal actionContext = new ActionContextThreadLocal(),从这里我们可以看出ActionContext是线程安全的,而ServletActionContext继承自ActionContext,所以ServletActionContext也线程安全,线程安全要求每个线程都独立进行,所以req的创建也要求独立进行,所以ServletActionContext.getRequest()这句话不要放在构造函数中,也不要直接放在类中,而应该放在每个具体的方法体中(eg:login()、queryAll()、insert()等),这样才能保证每次产生对象时独立的建立了一个req。

4. struts2中获得request、response和session

(1)非IoC方式

方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext()获取当前Action的上下文对象。

ActionContext ctx = ActionContext.getContext();

ctx.put("liuwei", "andy"); //request.setAttribute("liuwei", "andy");

Map session = ctx.getSession(); //session

HttpServletRequest request = ctx.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

HttpServletResponse response = ctx.get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);

细心的朋友可以发现这里的session是个Map对象, 在Struts2中底层的session都被封装成了Map类型. 我们可以直接操作这个Map对象进行对session的写入和读取操作, 而不用去直接操作HttpSession对象.

方法二:使用org.apache.struts2.ServletActionContext类

public class UserAction extends ActionSupport {

//其他代码片段

private HttpServletRequest req;

// private HttpServletRequest req = ServletActionContext.getRequest(); 这条语句放在这个位置是错误的,同样把这条语句放在构造方法中也是错误的。

public String login() {

req = ServletActionContext.getRequest(); //req的获得必须在具体的方法中实现

user = new User();

user.setUid(uid);

user.setPassword(password);

if (userDAO.isLogin(user)) {

req.getSession().setAttribute("user", user);

return SUCCESS;

}

return LOGIN;

}

public String queryAll() {

req = ServletActionContext.getRequest(); //req的获得必须在具体的方法中实现

uList = userDAO.queryAll();

req.getSession().setAttribute("uList", uList);

return SUCCESS;

}

//其他代码片段

}

(2)IoC方式(即使用Struts2 Aware拦截器)

要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。

public class UserAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {

private HttpServletRequest request;

private HttpServletResponse response;

public void setServletRequest(HttpServletRequest request) {

this.request = request;

}

public void setServletResponse(HttpServletResponse response) {

this.response = response;

}

public String execute() {

HttpSession session = request.getSession();

return SUCCESS;

}

}

Java中类的命名规范?

一、Java程序,包名:Package的名字应该都是由小写单词组成,如:text.demo.example

具体的示例如下:

com.icss下面为平台包。stmacmbas为本项目的根程序包。

stmacmbas.base为本项目的开发基础包。

stmacmbas.commerce为商业企业程序包。

stmacmbas.example为示例程序包。

stmacmbas.industry为工业企业程序包。

stmacmbas.stma为国家局程序包。

stmacmbas.util为工具包。

二、文件名。

1. 文件名由英文单词组成,每个单词的首字母大写,最好不要超过4个单词,如:ShipOrder.java。

2. Java文件的文件名要与程序中的public类名相同。

3. Servlet文件要以Servlet作为结尾,如:AddCompanyServlet.java。

三、类名:每个单词的首字母大写。同上。

四、变量名。

1. class变量的命名:变量的名字必须用一个小写字母开头,后面的单词用大写字母开头。

2. static final变量的命名:static final变量的名字应该都大写并且指出完整含义。

3. 用有意义的名字命名变量:首先,用完整的英语单词或约定俗成的简写命名变量(不允许用汉语拼音),如:firstName,zipCode。

4. 用复数命名Collection类变量。Collection包括数组,vector等。命名时使用复数:customers, classmates。

五、方法名。

1. 方法的名字必须用一个小写字母开头,后面的单词用大写字母开头。

2. 方法的名字要与该方法的用途相关。

六、参数名。

1. 参数的命名:参数的名字必须和变量的命名规范一致。

2. 方法的参数:使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字。

java怎么获取方法参数名

在java中,可以通过反射获取到类、字段、方法签名等相关的信息,像方法名、返回值类型、参数类型、泛型类型参数等,但是不能够获取方法的参数名。在实际开发场景中,有时需要根据方法的参数名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable注解,如果不指定相应的value属性,默认就是使用方法的参数名做为HTTP请求的参数名,它是怎么做到的呢?

在这样情况下,有两种方法获取方法来解决这种需求,第一种方法是使用注解,在注解中指定对应应的参数名称,在需要使用参数名称时,获取注解中相应的值即可。第二种方法是从字节码中获取方法的参数名,但是这有一个限制,只有在编译时使用了-g或-g:vars参数生成了调试信息,class文件中才会生成方法参数名信息(在本地变量表LocalVariableTable中),而使用-g:none方式编译的class文件中是没有方法参数名信息的。所以要想完全不依赖class文件的编译模式,就不能使用这种方式。

使用Java作为程序语言时,好的命名规范有哪些

Package 的命名

Package 的名字应该都是由一个小写单词组成。

Class 的命名

Class 的名字必须由大写字母开头而其他字母都小写的单词组成

Class 变量的命名

变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。

Static Final 变量的命名

Static Final 变量的名字应该都大写,并且指出完整含义。

参数的命名

参数的名字必须和变量的命名规范一致。

数组的命名

数组应该总是用下面的方式来命名:

byte[] buffer;

而不是:

 byte buffer[];

方法的参数

使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:

SetCounter(int size){

this.size = size;

}

变量名

普通变量命名应该采用首字母小写,其他字母首字母大写的方式。

final static变量的名字应该都大写,并且指出完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词如。

NUM_DAYS_IN_WEEK MAX_VALU

如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性

context=ctx message=msg

通过在结尾处放置一个量词,就可创建更加统一的变量

First(一组变量中的第一个) Last(一组变量中的最后一个) Next(一组变量中的下一个变量) Prev(一组变量中的上一个) Cur(一组变量中的当前变量)

无论什么时候,均提倡应用常量取代数字、固定字符串。也就是说,程序中除0,1以外,尽量不应该出现其他数字。

索引变量:i、j、k等只作为小型循环的循环索引变量。

逻辑变量:避免用flag来命名状态变量,用is来命名逻辑变量。

if(isClosed){ dosomeworks; return; }

数组

总是使用以下方式定义数组:

int[] arr = new int[10];

禁止使用C语言的是形式:

禁止 int arr[] = new int[10];

集合

数组或者容器推荐命名方式为名词+s的方式,例如:

 List persons = getPerson(); for(Person person : persons){ dosomeworks; }

泛型

应该尽量简明扼要(最好是一个字母),以利于与普通的class或interface区分

Container中的Element应该用E表示;Map里的key用K表示,value用V;Type用T表示;异常用X表示

如果需要接收多个Type类型的参数,应该用邻接T的大写字母——例如S——来依次表示,当然也可以用T1, T2这样的方式

public class HashSet extends AbstractSet {…} public class HashMapextends AbstractMap {…} public class ThreadLocal {…} public interface Functor { T val() throws X; }

推荐的命名

1.当要区别接口和实现类的时候,可以在类的后面加上“Impl”。

interface Container class ContainerImpl

2.Exception类最好能用“Exception”做为类命名的结尾

DataNotFoundException InvalidArgumentException

3.抽象类最好能用“Abstract”做为类命名的开头

AbstractBeanDefinition AbstractBeanFactory

4. Test类最好能用“Test”做为类命名的结尾

ContainerTest

5.简称与缩写(不推荐使用)

cp代表colorPoint buf代表buffer off代表offset len代表length

除非是在循环中,否则一般不推荐使用单个字母作为变量名,不过也有例外,即约定俗成的单个字母

b代表byte c代表char d代表double e代表Exception f代表float i, j, k代表整数 l代表long o代表Object s代表String v代表某些类型的特定值

代码风格

花括号

花括号统一采用以下格式:

if(bool experssion){ dosomework; }

除非花括号中为空,不然任何情况下不能省略花括号,并且花括号必须换行,例如:

if(i==0){ return; } while(true) {}

以下写法禁止出现:

禁止 if(i != 0) return; 禁止 if(i !=0) {return;}

括号

括号的前,后一个字符不需要空格,例如:

 Person p = new Person(“Jack”, 17);

空格

逗号之后紧跟一个空格。

Person p = new Person(“Jack”, 16, “China”);

二元操作符前后跟空格。

int i = a + b – c * d;

3. 一元操作符不需要空格,for语句分号后有空格。

for(int i = 0; I 10; i++){ dosomework; }

4. 括号前后不需要空格

类的定义结构按照顺序为:

1) 常量

2) 成员变量

3) 构造函数

4) 成员函数

5) get和set方法

各个部分之间留出一个空行。

例如:

规范类模板:

class Person{ private final static int MAX_AGE = 100; private String firstname = “Jack”; public Person(){} public Person(String firstname){ this.firstname = firstname; } public void doExercise(){ dosomeworks; run(); } private void run(){ dosomeworks; } public getFirstname(){ return firstname; } public setFirstname(String firstname){ this.firstname = firstname; } }

2.构造函数

1) 参数为空的构造函数出现在最上方

2) 有调用关系的构造函数相邻

3) 参数尽量由少到多从上至下排序

3.使用成员变量

在类的方法内引用成员变量了命名冲突以外,不使用this。非特殊情况在类的方法内都不使用get和set方法存取成员变量。

4.方法

有调用关系的方法尽量放在相邻的位置,public和private方法可以交叉放置。

5.get和set方法,所有需要公开的成员变量都要符合良好的javabean规范,提供get和set方法,尽量使用IDE工具自动生成。

Javadoc注释

在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中可以为每个类、接口、方法、字段添加 Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这些段落将在生成文档中以特定方式显示

java post请求参数怎么写

//serverURL url地址

HttpPost httpPost = new HttpPost(serverURL);

//param 为参数

StringEntity entity = new StringEntity(param);

entity.setContentType("application/x-www-form-urlencoded");

httpPost.setEntity(entity);

HttpResponse httpResponse = httpClient.execute(httpPost);

还可以用map作为参数

ListNameValuePair formparams = new ArrayListNameValuePair();

if(param!=null){

Set set = param.keySet();

Iterator iterator = set.iterator();

while (iterator.hasNext()) {

Object key = iterator.next();

Object value = param.get(key);

formparams.add(new BasicNameValuePair(key.toString(), value.toString()));

}

}

关于java请求响应参数命名和java命令参数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。